如何在 Visual Studio 中将“nuget add”作为构建后事件运行?

rud*_*den 5 visual-studio nuget nuget-package

我已在项目.csproj文件的 AfterBuild 部分添加了一条命令,如果它是发布配置,则会自动创建 NuGet 包。正如下面的代码片段中所指定的,这部分运行良好。

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

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

Edi*_*ika 5

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

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


rud*_*den 3

上一个问题的答案显示了如何在构建后事件中公开版本号。结合您已有的内容,您可以执行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>
Run Code Online (Sandbox Code Playgroud)