我试图使用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
来执行此操作吗?
我对这一切都非常陌生,所以我很有可能只是错过了简单的事情,或者错误地完成了所有的命令:)
如果我的问题不清楚,请提前抱歉!
答案 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时的结果:
在版本中构建时: