NetBeauty2 icon indicating copy to clipboard operation
NetBeauty2 copied to clipboard

In some cases, Netbeauty2 may cause the same dll to be loaded multiple times

Open bodong1987 opened this issue 2 years ago • 2 comments

https://user-images.githubusercontent.com/9072328/223904381-0b1528ea-b4c7-4959-9d3f-31783faa25ae.mp4

MyTests.zip 1.TestLibs is a public library that is referenced by other projects. 2.TestPlugin, simulation plug-in dll, dynamic loading, direct reference to TestLibs 3. TestConsoleWithRef directly references TestLibs and uses NetBeauty for directory optimization 4.TestConsole, load TestLibs through Assembly.LoadFile and call its methods.

When running with TestConsole, you will see TestLibs.dll loaded twice. It's not clear to me if this is expected, if Assembly.LoadFile must be used to briefly reference TestLibs, is there a solution to this problem?

bodong1987 avatar Mar 09 '23 03:03 bodong1987

image

i can't reproduce it even do everything exactly the same as the video, but after analyzing the project structure, but i guess here should be what things happened

  1. TestConsole and TestConsoleWithRef are one with NetBeauty and one without NetBeauty
  2. after building entire solution, both two projects files are mixed into the same output folder
  3. running the ncbeauty post build task, it will search every single *.deps.json and *.runtimeconfig[.dev].json and process them, so TestConsole is beauty unexcpedly too.
  4. ncbeauty injects a STARTUP_HOOK calls nbloader which will add a resolver to the default AssemblyLoadContext.
  5. TestLibs also adds a resolver to the current AppDomain
  6. TestLibs was loaded twice in somehow

btw: the project structure is kind of wired, TestConsole is trying to load the TestLibs and TestLibs is trying to load the TestPlugin and TestPlugin is referencing the TestLibs.

ps: NetBeauty has the concept of project since it is a msbuild task, but ncbeauty hasn't unless treats every different *.deps.json as a different project, but this behaviour should treat as a BUG.

liesauer avatar Mar 13 '23 07:03 liesauer

you can post a copy of debug build bins with pdb so i can have a deep look.

liesauer avatar Mar 13 '23 07:03 liesauer