2017-05-04 29 views
0

嘿,我一直在试图改变我的csproj使用.net核心风格。该项目是一个类库,我从中生成一个nuget包。一切似乎很好地工作的变化,如果我指定的值作为硬编码值Dotnet包不尊重版本属性的动态变量

<Version>1.0.1.1</Version> 

不过,我想使用一个共享的汇编文件,以推动一些项目的版本中SLN。哪些工作正常的DLL,但不是它生成的nuget包。运行dotnet pack具有相同的问题。

我尝试了几件事情来使这个工作,但最令人惊讶的似乎是它如何忽略变量。例如

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

尝试使用<PackageVersion>它只是正确地发生:这是MSBuild的属性,因此它具有去一个<PropertyGroup>组内:

<PropertyGroup> 
    <PackageVersion>1.0.1.1</PackageVersion> 
</PropertyGroup> 
+0

令人惊叹!这样可行。感谢:D –