【问题标题】:C# Project dependencies without reference没有引用的 C# 项目依赖项
【发布时间】:2018-07-19 02:29:39
【问题描述】:

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

假设我有项目:

  • P1
  • P2 引用 P1
  • P3
  • P4 引用 P1P3 对块状包 N1 的依赖

P2 是我的创业项目。

我想配置 P2P4 的依赖关系,以便构建 P4P4 和依赖项推送到 P2 的 bin 文件夹,但我不希望 P2 的 dll 具有对 P4 的 .net 引用p>

我通过 csproj 中的特定项目引用部分设法做到了这一点:

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

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

有人知道怎么做吗?

谢谢

【问题讨论】:

  • 为什么不能把所有的引用都放到 P2 中?
  • 我不想。根据部署 P2 的方式和位置,并非所有类似 P4 的项目都会部署。

标签: c# visual-studio msbuild dependencies csproj


【解决方案1】:

有人知道怎么做吗?

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

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

要解决这个问题,可以直接引用P3N1到工程P2或者在中添加复制命令行P2 的构建事件将这些 dll 复制到 bin 文件夹。

此外,您还可以将虚拟代码添加到项目 P2 中使用项目引用 P3N1 的文件中。

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

希望这会有所帮助。

【讨论】:

  • 您好,感谢您的回答。 P4 直接使用 P3N1。但实际上,P2 不使用 P4P3N1
  • @luke77,“I would like to configure P2 with a dependency to P4”是什么意思?您想要 P2 参考 P4 还是 P4 参考 P2?需要确认。
  • 对不起,我所说的依赖是指构建依赖。如果我构建 P2,我还希望构建 P4,并将 P4、P3、N1“粘贴”到 P2 的 bin。
  • @luke77,如果你想要If I build P2, I want also P4 to be built,你为什么不设置P2参考P4呢?你不想设置那个?如果是,您可以在 P2 中添加自定义任务以在构建 P2 之前构建 P4,并将 P3、N1 复制到 P2 的 bin 文件夹中。
  • @LeoLiu-MSFT:您提到添加自定义任务来构建 P4 并将 P3、N1 复制到 P2 的 bin 文件夹。能否请您为我提供有关该主题的示例/sn-p/讨论?
猜你喜欢
  • 2015-08-24
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2012-06-30
  • 2016-04-12
  • 2020-03-17
  • 1970-01-01
相关资源
最近更新 更多