如何运行' nuget add'作为Visual Studio中的后期构建事件?

时间:2016-06-23 19:55:59

标签: visual-studio nuget nuget-package

我在项目的.csproj文件的AfterBuild部分添加了一个命令,如果它是Release配置,它会自动创建一个NuGet包。这部分,如下面的代码片段所示,运行良好。

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release'">
    <Exec Command="nuget pack $(ProjectFileName) -IncludeReferencedProjects -Prop Configuration=Release"></Exec>
</Target>

我现在想添加一个额外的nuget add $(NugetFileName) -source c:\NugetLocal命令来将NuGet包复制到我的本地存储库。不幸的是,$(NugetFileName)宏不存在。我可以将$(TargetName)宏与.nupkg结合使用,但包名称包含程序集版本号,对于它来说,它看起来并不是一个方便的宏。有没有办法在不使用MSBuild脚本的情况下执行此操作?

2 个答案:

答案 0 :(得分:3)

有一个answer to a previous question,显示如何在after build事件中公开版本号。将其与您已经使用的内容相结合,您可以执行包含版本号的nuget add命令:

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release'">
    <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
        <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
    </GetAssemblyIdentity>
    <Exec Command="nuget pack $(ProjectFileName) -IncludeReferencedProjects -Prop Configuration=Release"></Exec>
    <Exec Command="nuget add $(TargetName).%(AssemblyVersion.Version).nupkg -Source C:\NugetLocal"></Exec>
</Target>

答案 1 :(得分:0)

在Visual Studio 2019中,已添加了在构建项目时自动创建Nuget软件包的功能,因此您不必在后期构建事件中创建它。 将软件包添加到本地存储库,这只是.csproj文件中的一行代码

<Target Name="NugetAdd" AfterTargets="Pack">
    <exec command="nuget add $(OutputPath)$(PackageId).$(PackageVersion).nupkg -source d:\NuGetLocal" />    
</Target>