NuGet:当$(ConfigurationName)== Debug时,如何将自动增加的内部版本号附加到我的NuGet包版本中?

时间:2017-11-14 16:57:30

标签: visual-studio package nuget nuget-package post-build-event

我试图使用Visual Studio后期构建事件来完成此任务。

我想要发生什么:

当我构建调试时,我想创建一个.nupkg,如MyProject.1.0.0.xxxx-ci.nupkg,其中xxxx是一些自动递增的内部版本号,1.0.0 1}}在我的.nuspec文件中定义。

但是,当我构建发布时,我只想使用我的nuspec进行简单的MyProject.1.0.0.nupkg

我有一个开发NuGet提要和一个生产NuGet提要,我想在构建之后推送它们,这就是为什么我只想在Debug中显示这个额外的构建号。

我几乎在[assembly: AssemblyVersion("1.0.0.*")]中使用AssemblyInfo.cs来解决这个问题,但是我的发布版本也得到了这个版本号,并且我不想这样做。

以下是我在后期制作中使用的代码,仅使用nuspec和 AssemblyInfo.cs:

if "$(ConfigurationName)" == "Debug" (
nuget pack "$(ProjectDir)$(ProjectName).nuspec" -Suffix ci
nuget push -Source http://myfeed.com/nuget/NuGet-Development "*.nupkg" )

if "$(ConfigurationName)" == "Release" (
nuget pack "$(ProjectDir)$(ProjectName).nuspec" 
nuget push -Source http://myfeed.com/nuget/NuGet-Production "*.nupkg" )

我可以通过某种方式使用-Version来执行此操作吗?

我对这一切都非常陌生,所以我很有可能只是错过了简单的事情,或者错误地完成了所有的命令:)

如果我的问题不清楚,请提前抱歉!

1 个答案:

答案 0 :(得分:1)

  

我有什么方法可以使用-Version来做到这一点吗?

答案是肯定的。使用[assembly: AssemblyVersion("1.0.0.*")]文件时,可以使用.nuspec中的版本。只需将版本添加到宏,然后您就可以在构建事件中使用此宏,如:@(VersionNumber)

要完成此操作,请卸载您的项目。然后在项目的最后,就在结束标记</Project>之前,放在脚本下面:

<PropertyGroup>
   <PostBuildEventDependsOn>
     $(PostBuildEventDependsOn);
     PostBuildMacros;
   </PostBuildEventDependsOn>    
</PropertyGroup>

<Target Name="PostBuildMacros">
  <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
    <Output TaskParameter="Assemblies" ItemName="Targets" />
  </GetAssemblyIdentity>
  <ItemGroup>
    <VersionNumber Include="@(Targets->'%(Version)')"/>
  </ItemGroup>
</Target>

现在我们可以在构建事件中使用此宏:@(VersionNumber),如下所示

if "$(ConfigurationName)" == "Debug" (
nuget.exe pack "$(ProjectDir)$(ProjectName).nuspec" -Suffix @(VersionNumber)-ci)
nuget push -Source http://myfeed.com/nuget/NuGet-Development "*.nupkg" )

if "$(ConfigurationName)" == "Release" (
nuget pack "$(ProjectDir)$(ProjectName).nuspec" 
nuget push -Source http://myfeed.com/nuget/NuGet-Production "*.nupkg" )

使用AssemblyVersion("2.0.0.0")构建Debug时的结果:

enter image description here

在版本中构建时:

enter image description here