从解决方案中引用其他项目时,依赖关系中的黄色三角形

时间:2020-09-18 22:32:26

标签: visual-studio visual-studio-2019

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

example picture

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

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

我的问题是:是否有更好的方法从另一个项目中引用一个项目,因此被引用的项目被编译并复制到另一个项目的输出目录中? (我的意思是,不能使用丑陋的骇客,例如使ProjectB的输出目录与ProjectA相同或向ProjectB添加自定义步骤。)

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

这是从ProjectB引用ProjectA.csproj的方式:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

仅作为示例:

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

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