首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果指定了Private=False,为什么MSBuild会忽略ProjectReference Private=False

如果指定了Private=False,为什么MSBuild会忽略ProjectReference Private=False
EN

Stack Overflow用户
提问于 2021-03-31 15:34:07
回答 1查看 118关注 0票数 0

我有一个包含非私有ProjectReference项的项目:

代码语言:javascript
复制
<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。这是如何中断引用配置的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-01 08:53:53

在这种情况下,通过CLI调用设置的OutputPath将是一个global property,因此也适用于所有引用的项目,因此RProcessConfig.csproj也将构建到相同的输出目录,主项目不会复制它,但它已经在那里了。

最新版本的MSBuild (16.8+)也可以通过传递-p:PassOutputPathToReferencedProjects=False (引入了by this PR)来抑制此全局属性的流动。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66883541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档