visual-studio - 如何在 Visual Studio 中将 'nuget add' 作为构建后事件运行?

标签 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>

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

最佳答案

有一个answer to a previous question它显示了如何在构建后事件中公开版本号。结合你已有的,你可以执行 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>

关于visual-studio - 如何在 Visual Studio 中将 'nuget add' 作为构建后事件运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000691/

相关文章:

c++ - 在 Visual Studio 中将输出锁定到输出窗口

c# - MSBuild 未将文件复制到发布文件夹?

asp.net-mvc - StructureMap-MVC3 中 scan.TheCallingAssembly、scan.WithDefaultConventions 的用途

c# - Nuget包...项目中不存在...包...已存在于文件夹中

c# - Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) 不添加额外的编码提供者

json - 安装该软件包时,我的nuget软件包中的content文件夹未将文件添加到根目录中

c# - 显示没有断点的当前调用堆栈

c# - 当安装了多个版本的 VS 时,如何将 VSIX(visual studio 扩展)从本地驱动器安装到特定版本的 VS?

visual-studio-2015 - 使用 .targets 文件通过 NuGet 设置文件属性

visual-studio - 如何在没有 Visual Studio 的情况下安装 Nuget 包?