我有一个包含多个项目的解决方案。
我们说我有项目:
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 )
有谁知道怎么做?
由于
答案 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。
希望这有帮助。