.net 递归复制本地

.net 递归复制本地,.net,dll,msbuild,.net,Dll,Msbuild,关于在msbuild中复制本地的另一个问题 我遇到的问题是复制了太多的程序集 我的结构如下: 动态链接库 B.dll 第三方1.dll 第三方2.dll 现在,B.dll引用了两个第三方库,本地副本设置为false。无论发生什么情况,它们都将出现在目标环境中。 B.dll是本地副本设置为true的a.dll的依赖项。我需要B.dll,无论我在哪里部署A.dll 现在的问题是两个第三方程序集也被复制了。我不想这样,我也不明白为什么会这样 有一点可能很重要:生成A和B的项目采用不同的解决

关于在msbuild中复制本地的另一个问题

我遇到的问题是复制了太多的程序集

我的结构如下:

  • 动态链接库
    • B.dll
      • 第三方1.dll
      • 第三方2.dll
现在,B.dll引用了两个第三方库,本地副本设置为false。无论发生什么情况,它们都将出现在目标环境中。 B.dll是本地副本设置为true的a.dll的依赖项。我需要B.dll,无论我在哪里部署A.dll

现在的问题是两个第三方程序集也被复制了。我不想这样,我也不明白为什么会这样

有一点可能很重要:生成A和B的项目采用不同的解决方案

有人知道发生了什么事并知道如何解决吗?

试试设置

<PropertyGroup> 
  <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
</PropertyGroup>

真的

在B项目中。这应该防止MsBulid处理对OutputPath的引用。

嗯,这没有多大意义。从B的bin\Debug目录中删除这些DLL。重建B并确保他们不会回来。这可能是另一个重要信息。没有“调试”目录。当我在另一个应用程序中将这些DLL作为插件开发时,它们被直接编译到应用程序使用它们的目录中。此目录中已存在一些必需的第三方DLL。但是还有一些其他第三方DLL来自其他目录,它们被复制到目标目录中(这是我不希望发生的部分)。