C#项目依赖项没有引用

时间:2018-02-08 13:39:22

标签: c# visual-studio msbuild dependencies csproj

我有一个包含多个项目的解决方案。

我们说我有项目:

  • P1
  • P2 ,引用 P1
  • P3
  • P4 ,引用 P1 P3 是对nugget包的依赖 N1

P2 是我的启动项目。

我想将 P2 配置为 P4 ,因此 P4 将构建, P4 和依赖项被推送到 P2 的bin文件夹,但我不希望 P2 的dll具有.net引用 P4 < /强>

我部分设法通过csproj中的特定项目引用来实现这一点:

<ProjectReference Include="..\P4\P4.csproj">
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
  <OutputItemType>Content</OutputItemType>
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  <Targets>Build;DebugSymbolsProjectOutputGroup</Targets>
</ProjectReference>

但是这个解决方案只会添加 P4 而不是依赖项( P3 N1

有谁知道怎么做?

由于

1 个答案:

答案 0 :(得分:0)

  

有谁知道怎么做?

这是间接依赖关系的默认行为。

如果项目 P4 实际上不包含明确使用参考项目 P3 和nuget包 N1 的任何代码,则VS / MSBuild不会检测到 P2 需要 P3 N1 ,因此MSBuild认为没有必要复制 P3 N1 P2 的输出文件夹。这就是为什么只将 P4 而非依赖关系( P3 N1 )添加到 P2 的bin中的原因。目录

要解决此问题,您可以直接引用 P3 N1 投影 P2 或在中添加复制命令行P2 的构建事件将这些dll复制到bin文件夹。

此外,您还可以在项目P2中使用项目参考 P3 N1 的文件中添加虚拟代码。

有关详细信息,请参阅MSBuild doesn't copy references (DLL files) if using project dependencies in solution

希望这有帮助。