代码之家  ›  专栏  ›  技术社区  ›  Shaun Z.

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

  •  1
  • Shaun Z.  · 技术社区  · 7 年前

    我正在尝试使用Visual Studio后期生成事件来实现这一点。

    我希望发生的事情:

    当我内置时 调试 .nupkg 喜欢 MyProject.1.0.0.xxxx-ci.nupkg xxxx 是一些自动递增的内部版本号,并且 1.0.0 在我的 .nuspec 文件

    然而,当我建立 释放 ,我只想要一个简单的 MyProject.1.0.0.nupkg 使用我的nuspec。


    我有一个开发NuGet提要和一个生产NuGet提要,我想在构建后将它们推送到其中,这就是为什么我只希望在调试中显示这个额外的构建编号。

    我几乎已经用 [assembly: AssemblyVersion("1.0.0.*")] 在里面 AssemblyInfo.cs ,但我的发布版本也会附加那个版本号,我不想这样。


    这是我现在在后期构建中使用的代码,仅使用nuspec和 AssemblyInfo。反恐精英:

    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 回复  |  直到 7 年前
        1
  •  2
  •   Leo Liu    7 年前

    有什么方法可以用-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>
    

    现在我们可以使用这个宏: @(版本号) 在生成事件中,如下所示

    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") :

    enter image description here

    内置版本时:

    enter image description here