Dotnet包不关注版本属性的动态变量

时间:2017-05-04 22:42:07

标签: c# .net msbuild .net-core nuget-package

嘿我一直试图改变我的csproj以使用.net核心风格。该项目是一个类库,我从中生成一个nuget包。如果我将值指定为硬编码值

,则所有似乎都可以正常使用更改
<Version>1.0.1.1</Version>

但是我试图使用共享程序集文件来驱动sln中的一些项目的版本。哪个适用于dll,但不适用于它生成的nuget包。正在运行dotnet pack会遇到同样的问题。

我尝试了一些方法来实现这一点,但最令人惊讶的似乎是它忽略了变量。 e.g。

InitialTargets="SetVersion"

<Target Name="SetVersion">
<PropertyGroup>
  <Version>1.0.1.1</Version>
</PropertyGroup>

<Version>$(Version)</Version>

生成的dll都具有版本1.0.1.1或变量设置的任何内容。但是nuget包仍然只生成1.0.0.0版本。

如果我指定完全相同的输出:

<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>

让它从SharedAssembly.cs文件中读取版本。 dll是正确的版本,但不是nuget包。

我知道我可以在调用dotnet pack时指定版本但是希望避免这种情况,并且在从VS运行构建时恰好发生它

1 个答案:

答案 0 :(得分:2)

尝试使用<PackageVersion>:这是MSBuild属性,因此它必须位于<PropertyGroup>组内:

<PropertyGroup>
    <PackageVersion>1.0.1.1</PackageVersion>
</PropertyGroup>