仅针对一个框架的MSBuild目标
我有一个多框架目标项目-仅针对一个框架的MSBuild目标,build,msbuild,.net-core,.net-standard,Build,Msbuild,.net Core,.net Standard,我有一个多框架目标项目-netstandard2.0;net471 我想分别为netframework和netstandard构建解决方案 当前我使用此MSBuild命令: MSBuild MySln.sln/t:Build/p:Configuration=Release/p:Platform=“Any CPU”/m/nr:False 我尝试运行此命令: MSBuild CxAudit.sln/t:Build/p:Configuration=Release/p:Platform=“Any CPU
netstandard2.0;net471
我想分别为netframework
和netstandard
构建解决方案
当前我使用此MSBuild命令:
MSBuild MySln.sln/t:Build/p:Configuration=Release/p:Platform=“Any CPU”/m/nr:False
我尝试运行此命令:
MSBuild CxAudit.sln/t:Build/p:Configuration=Release/p:Platform=“Any CPU”/p:TargetFramework=netstandard2.0/m/nr:False
(使用/p:TargetFramework=netstandard2.0)
但是它失败了,甚至第一个命令也通过并构建了
netstandard
输出。我建议设置一个自定义属性并对这些属性进行条件化。这样,您就不会影响其他项目或引用:
<TargetFrameworks Condition="'$(BuildNetStdOnly)' == 'true'">netstandard2.0</TargetFrameworks>
<TargetFrameworks Condition="'$(BuildNetFxOnly)' == 'true'">net471</TargetFrameworks>
<TargetFrameworks Condition="'$(TargetFrameworks)' == ''">netstandard2.0;net471</TargetFrameworks>
请注意,之所以设置复数版本,是因为如果两个目标框架都恢复了项目,则需要将
TargetFramework
设置为内部版本的全局属性。如果要设置单数的TargetFramework
,还需要通过将-restore
参数也传递给msbuild来为每次调用再次还原。是否尝试过/p:TargetFrameworks=netstandard2.0
(使用s
)?解决方案中是否有不针对netstandard2.0
的项目?我敢肯定,未能建设的项目将是其他项目之一。。
msbuild -p:BuildNetStdOnly=true -p:Configuration=Release -m -nr:false
msbuild -p:BuildNetFxOnly=true -p:Configuration=Release -m -nr:false