我有一个具有以下简化的依赖项结构的项目(总共有很多项目)。
MainWindow
|- UserControl
|- Library
|- ExternalLib.dll
ExternalLib.dll是具有始终复制功能的内容资源。
当我构建项目时,它可以正确地将ExternalLib复制到我的输出文件夹中。如果再单击“调试”,它将重建我的Library和UserControl项目并删除我的ExternalLib.dll。
在MSBuild构建日志中,我看到以下内容:
5>Task "Delete"
...
5> Deleting file "/path/to/bin/ExternalLib.dll".
5>Done executing task "Delete".
为什么MsBuild会删除我正在构建的项目所依赖的项目的依赖关系?
最佳答案
我想到了。显然,如果您有一个项目结构,其中A引用B引用了C,则如果A不需要C,则编译器“足够聪明”以删除C。
因为在我的主应用程序中对ExternalLib的引用是通过反射进行的,所以编译器认为我不需要ExternalLib。
该问题可以通过两种方式解决:
在A中有对C的虚拟引用,例如,只需创建在C中找到的类的实例。
在A中明确引用C。
我个人选择了第二个选项。
关于c# - MsBuild在我生成时会删除依赖项dll,然后在Visual Studio中进行调试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57086953/