基于生成目标的MSBuild change属性
我想知道我正在构建的平台是否是 OSX。虽然我得到了一个可行的解决方案,但它需要我指定-r and -p:RuntimeIdentifier,而且它也非常脆弱。我知道这不是正确的做法。
现在我有类似的东西
<IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))' == 'true'">true</IsOSX>
<BuildingForOSX Condition="'$(RuntimeIdentifier.StartsWith(`osx`))' Or (('$(IsOSX)' == 'true') And ('$(RuntimeIdentifier)' == ''))">true</BuildingForOSX>
<BeautyEnable Condition="('$(BeautyEnable)' == '') And ('$(BuildingForOSX)' == 'true')">false</BeautyEnable>
<BeautyEnable Condition="'$(BeautyEnable)' == ''">true</BeautyEnable>
和
<PackageReference Condition="'$(BuildingForOSX)' == 'true'" Include="Dotnet.Bundle" Version="*" />
<PackageReference Condition="'$(BeautyEnable)' == 'true'" Include="nulastudio.NetBeauty" Version="2.0.0.0-beta.1" />
目标是:
- 仅当目标平台为 OSX 时才下载 Bundle
- 仅在目标平台不是OSX时启用 NetBeauty
这样做的正确方法是什么:
- dotnet restore -r osx-arm64没有-p:RuntimeIdentifier=osx-arm64,和
- dotnet msbuild -p:RuntimeIdentifier=osx-arm64 -t:BundleApp不使用 NetBeauty 就可以工作?