如何在构建期间设置PackageVersion属性

时间:2018-08-14 13:30:12

标签: msbuild nuget

构建.Net Core类库时,我会自动生成Nuget软件包。这些软件包的版本来自.csproj文件中的PackageVersion属性。

问题是我想在构建运行时覆盖目标中这些PackageVersion属性的值。我尝试了以下方法:

  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <PropertyGroup>
      <PackageVersion>5.0.99</PackageVersion>
    </PropertyGroup>
  </Target>

(对于本示例,5.0.99只是一个简单的值)

但是,这似乎无济于事。 PackageVersion属性的初始值将继续用作Nuget程序包的版本。

如何覆盖目标中PackageVersion属性的值,以便在生成Nuget包期间使用新值?

1 个答案:

答案 0 :(得分:0)

您可以在 csproj 文件中扩展 GetPackageVersionDependsOn 属性。

<PropertyGroup>
  <GetPackageVersionDependsOn>MyCustomTask;$(GetPackageVersionDependsOn)</GetPackageVersionDependsOn>
</PropertyGroup>

<Target Name="MyCustomTask">
 <PropertyGroup>
  <PackageVersion>5.0.99</PackageVersion>
 </PropertyGroup>
</Target>

这也可以通过使用上述代码导入自定义目标文件来实现。

<Import Include="../MyCustom.targets" />

但是在使用安装目标导入的自定义 nuget 包时它不起作用。 在 msbuild -t:pack

期间不导入 Nuget 包 *.targets 文件