类似的问题已通过here,here等解决,但它们都引用了 external 引用的问题。在我的解决方案中,我想从一个C#项目引用另一个项目,因此projectB
的输出在projectA
的输出中可用(本地复制:是)。但是,由于ProjectB
在projectA
依赖项中列出,因此它带有警告黄色三角形:
“ Projects”分支中的第一个项目是一个库,但是第二个项目(将是ProjectB
)是一个.Net控制台可执行文件,除了可执行文件本身,我不需要其他任何东西。 / p>
我猜想VS2019正在抱怨,因为我没有从ProjectB
程序集中导出任何内容,因此无法将任何内容导入ProjectA
。如果ProjectB
是C ++项目,则会发生相同的行为。
我的问题是:是否有更好的方法从另一个项目中引用一个项目,因此被引用的项目被编译并复制到另一个项目的输出目录中? (我的意思是,不能使用丑陋的骇客,例如使ProjectB
的输出目录与ProjectA
相同或向ProjectB
添加自定义步骤。)
请注意,除了浏览器中令人讨厌/误导的警告图标外,我当前的配置按预期工作。
这是从ProjectB
引用ProjectA.csproj
的方式:
<ProjectReference Include="..\ProjectB\ProjectB.csproj">
<Private>true</Private>
</ProjectReference>
编辑:添加了有关自定义步骤的说明。
答案 0 :(得分:0)
您不必在控制台应用程序中添加Copy Local
= Yes作为引用,而是将输出路径设置为ProjectA
,而是应该在Visual Studio中编写用于生成后事件的命令:>
ProjectB
的属性仅作为示例:
copy /Y "$(TargetDir)$(ProjectName).exe" "$(SolutionDir)ProjectA\Debug\bin\$(ProjectName).exe"
更新:如果您不希望ProjectB
知道ProjectA
(我想为什么),请在ProjectA
中添加步骤。要确保在复制到ProjectB
的bin目录之前已构建ProjectA
,请添加预构建命令以构建ProjectB
,或设置正确的构建顺序并确保始终进行构建运行ProjectA
之前的整个解决方案,因此ProjectB
的代码中的最新更改将被编译并复制。