我有一个包含非私有ProjectReference项的项目:
<ItemGroup>
<ProjectReference Include="..\..\RProcessConfig\RProcessConfig.csproj">
<Private>false</Private>
</ProjectReference>
</ItemGroup>在命令行中使用"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Msbuild.exe" %cd%\Modules\AreaArithmetics\AreaArithmetics.csproj的效果非常好。依赖项dll没有被复制到输出目录,我很高兴。
但是,如果我使用"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Msbuild.exe" %cd%\Modules\AreaArithmetics\AreaArithmetics.csproj /p:OutputPath=%cd%\RProcessService\RProcessServiceCore\bin\publish\Modules指定其他输出路径而不是在AreaArithmetics.csproj中指定的路径,则<Private>false</Private>部件似乎会被忽略,并且我的依赖项会出现在输出文件夹中
这两个调用之间唯一的区别是,第二个调用将OutputPath指定为MSBuild。这是如何中断引用配置的?
发布于 2021-04-01 08:53:53
在这种情况下,通过CLI调用设置的OutputPath将是一个global property,因此也适用于所有引用的项目,因此RProcessConfig.csproj也将构建到相同的输出目录,主项目不会复制它,但它已经在那里了。
最新版本的MSBuild (16.8+)也可以通过传递-p:PassOutputPathToReferencedProjects=False (引入了by this PR)来抑制此全局属性的流动。
https://stackoverflow.com/questions/66883541
复制相似问题