C#无参考的项目依赖关系
我有一个多项目的解决方案 假设我有一些项目:C#无参考的项目依赖关系,c#,visual-studio,msbuild,dependencies,csproj,C#,Visual Studio,Msbuild,Dependencies,Csproj,我有一个多项目的解决方案 假设我有一些项目: P1 P2参考P1 P3 P4参考P1和P3对熔核包的依赖性N1 P2是我的创业项目 我想将P2配置为对P4的依赖项,因此将构建P4,并将依赖项推送到P2的bin文件夹中,但我不希望P2的dll具有对P4的.net引用 我通过csproj中的特定项目参考部分地做到了这一点: <ProjectReference Include="..\P4\P4.csproj"> <ReferenceOutputAssembly>fal
- P1
- P2参考P1
- P3
- P4参考P1和P3对熔核包的依赖性N1
<ProjectReference Include="..\P4\P4.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<OutputItemType>Content</OutputItemType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<Targets>Build;DebugSymbolsProjectOutputGroup</Targets>
</ProjectReference>
假的
内容
总是
建设;调试符号ProjectOutputGroup
但此解决方案只添加了P4,而不添加依赖项(P3和N1)
有人知道怎么做吗
谢谢
有人知道怎么做吗
这是间接依赖项的默认行为
如果projectP4实际上不包含任何显式使用参考projectP3和nuget packageN1的代码,VS/MSBuild不会检测到P3,P2需要N1,因此MSBuild认为没有必要复制P3,N1到P2的输出文件夹。这就是为什么只将P4而不是依赖项(P3和N1)添加到P2的bin目录中的原因
要解决此问题,您可以直接引用P3、N1来投影P2,或者在P2的构建事件中添加复制命令行,以将这些dll复制到bin文件夹
此外,还可以将伪代码添加到项目P2中使用项目引用P3、N1的文件中
有关更多详细信息,请参阅
希望这能有所帮助。为什么不能将所有引用放入P2?我不想。根据P2的部署方式和位置,并非所有类似P4的项目都将部署。您好,谢谢您的回答。P4直接使用P3和N1。但实际上,P2不使用P4或P3或N1@luke77,您是什么意思“
我想将P2配置为依赖于P4
”?您想要P2参考P4还是P4参考P2?需要确认。对不起,我所说的依赖关系是指构建依赖关系。如果我构建P2,我还希望构建P4,并将P4、P3、N1“粘贴”到P2的bin。@luke77,如果您希望如果我构建P2,我还希望构建P4,为什么不设置P2引用P4?你不想设置那个吗?如果是,您可以在P2中添加自定义任务以在生成P2之前生成P4,并将P3,N1复制到P2的bin文件夹。@LeoLiu MSFT:您提到过添加自定义任务以生成P4,并将P3,N1复制到P2的bin文件夹。请您给我举一个关于这个主题的例子/片段/讨论,好吗?