Giter Club home page Giter Club logo

Comments (5)

TIPConsulting avatar TIPConsulting commented on July 19, 2024 1

Looks like the "bonus bug" has a fix in the pipeline: dotnet/roslyn#50714

from cswin32.

AArnott avatar AArnott commented on July 19, 2024

a backend file that I cannot see

Tip: if you're using VS 16.9 (in Preview), all generated files will be discoverable via Solution Explorer:

image

But that may not yet be available in the public preview. Watch for it.
In the meantime something else that may help you is to add a NativeMethods.json file to your project with this content:

{
  "$schema": "D:\\git\\CsWin32\\src\\Microsoft.Windows.CsWin32\\settings.schema.json",
  "emitSingleFile": true
}

Then when you use F12 on LockWorkStation the file you are taken to will have everything in it so you can review it (including BOOL).

Now to your actual problem... that's very peculiar because we generate BOOL when we generate the function that requires it. Can you share the content of the generated file after applying the NativeMethods.json trick?

from cswin32.

TIPConsulting avatar TIPConsulting commented on July 19, 2024

The first tip that you showed about finding the generated files does work for me, thanks (but it has a bug, see footnote)

I made a new discovery that might help. The project structure is a bit bigger than I first said, and the extra complexity is key to the issue.

Project structure:
Plywood
    |__Plywood.Client

Plywood.Client references Plywood. Plywood and Plywood.Client both use CsWin32 generators. I have added the NativeMethods.json modifier to both projects

image

Right now, if both projects have populated NativeMethods.txt files, then Plywood will compile but Plywood.Client will fail. If I remove the NativeMethod.txt from Plywood, then Plywood.Client will compile. So this BOOL error is happening when there is a parent project that also uses CsWin32

Here is the NativeMethods.cs file from Plywood.Client if both generators are enabled:
Plywood.Client.NativeMethods_Broken.txt

Here is the Here is the NativeMethods.cs file from Plywood.Client if the parent generator is disabled:
Plywood.Client.NativeMethods.txt

When the parent generator is active, the child does not generate its own BOOL. This is likely because BOOL is already generated by the parent, but its marked as internal so the child cant access it. Maybe the generators run in a shared context even though they target different projects? Or possibly related to work done for #3?


Now for a bonus bug: This is related to viewing the generator output code in VS. In the screenshot, I show two projects with generated NativeMethods.cs files. Both of those file icons open the same physical file. So I cannot see the actual contents of Plywood.NativeMethods.cs, it just opens the Plywood.Client.NativeMethods.cs file

Also, if both projects have active generators, then F12 will also show the same file when used from either project

from cswin32.

AArnott avatar AArnott commented on July 19, 2024

Thanks. I'll see if I can repro the BOOL bug and get a fix.

For the bonus bug, can you please file that against the dotnet/roslyn repo, as they own that?

from cswin32.

AArnott avatar AArnott commented on July 19, 2024

Yup, this is biting me too.

from cswin32.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.