我有一个具有以下简化的依赖项结构的项目(总共有很多项目)。

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/

10-10 13:03