【问题标题】:Yellow triangle in dependencies when referencing other projects from the solution从解决方案中引用其他项目时,依赖项中的黄色三角形
【发布时间】:2020-09-21 15:08:18
【问题描述】:

herehere 等已经解决了类似的问题,但它们都涉及外部引用的问题。在我的解决方案中,我想从一个 C# 项目引用另一个,因此 projectB 的输出在 projectA 的输出中可用(复制本地:是)。但是,由于 ProjectB 列在 projectA 依赖项中,因此它带有警告黄色三角形:

“项目”分支中的第一个项目是一个库,但第二个项目(将是 ProjectB)是一个 .Net 控制台可执行文件,除了可执行文件本身之外我不需要任何其他东西。

我猜 VS2019 是在抱怨,因为我没有从 ProjectB 程序集中导出任何内容,因此无法将任何内容导入 ProjectA。如果 ProjectB 是 C++ 项目,也会发生同样的行为。

我的问题是:有没有更好的方法从另一个项目中引用一个项目,所以引用的项目被编译并复制到另一个项目的输出目录中? (我的意思是,不要诉诸丑陋的技巧,比如让ProjectB 的输出目录与ProjectA 的输出目录相同,或者向ProjectB 添加自定义步骤)。

请注意,我当前的配置按预期工作,除了浏览器中烦人/误导性的警告图标。

这就是ProjectBProjectA.csproj 中引用的方式:

    <ProjectReference Include="..\ProjectB\ProjectB.csproj">
      <Private>true</Private>
    </ProjectReference>

编辑:添加了关于自定义步骤的说明。

【问题讨论】:

  • 实际上没有必要模糊项目名称。可以肯定的是,如果不这样做,就不会泄露任何私人或 IP 信息
  • @MickyD 因为我使用的是我的实名竞争可能会猜到我在做什么(我在我的国家工作的一个非常小的利基市场)。

标签: visual-studio visual-studio-2019


【解决方案1】:

您应该在 Visual Studio 中为构建后事件编写命令,而不是将控制台应用程序添加为 Copy Local=Yes 的引用,并将输出路径设置为 ProjectA's:

  1. 转到ProjectB的属性
  2. 选择构建事件选项卡并找到“构建后事件命令行”文本框
  3. 使用相对路径和宏编写复制命令

举个例子:

copy /Y "$(TargetDir)$(ProjectName).exe" "$(SolutionDir)ProjectA\Debug\bin\$(ProjectName).exe"

更新:如果您不想让ProjectB 知道ProjectA(我想不出为什么),请将这些步骤添加到ProjectA。为确保ProjectB 在被复制到ProjectA 的bin 目录之前已构建,请添加预构建命令来构建ProjectB,或设置正确的构建顺序并确保始终在运行@ 之前构建整个解决方案987654331@ 所以ProjectB 的代码的最新更改被编译和复制。

【讨论】:

  • 谢谢,但这不是我需要的,因为我不想让ProjectB 知道ProjectA。我会在问题中说得更清楚。
  • 然后将自定义的构建后/构建前事件添加到ProjectA。相应地编辑了我的答案。
  • pre-build/post-build 的问题是项目可能有不同的输出文件夹,因为它们可能有不同的架构、发布/调试构建配置等。我当然可以打开一个 CMD 框并甚至手动复制文件,但我是 1)希望构建环境能够自动处理(假设它可以完成我想要的一切,除了警告覆盖)和 2)希望解释为什么会出现警告覆盖首先。请注意,我的问题是“有没有更好的方法从另一个项目中引用一个项目?”
猜你喜欢
  • 2019-06-08
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多