我在项目的.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脚本的情况下执行此操作?
答案 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>