【问题标题】:MSBuild NuGet PackageMSBuild NuGet 包
【发布时间】:2015-12-23 19:12:46
【问题描述】:

我一直在寻找从 Visual Studio 项目自动创建 NuGet 包的最佳方法。 This 是最新的设置说明集,但由于最近的更改,我无法遵循这些说明。我正在寻找包括以下内容的设置说明:

  • 我需要包含哪个NuGet packages
    • 我发现没有使用这些在我看来很奇怪的东西
    • 描述不是很有帮助
  • 我需要对 .csproj 文件进行哪些更改才能通过 MSBuild 自动打包
    • 请包含 .csproj 和 .nuspec 文件的说明(如果有差异)
    • 奖励:使用 .csproj 中的令牌替换将 .nuspec 中的特定文件打包

我正在使用 Visual Studio 2015。如果说明也与 2013 兼容,那就太好了,但这不会破坏交易。

【问题讨论】:

  • @AaronCarlson 奖金——截至今天,据我所知——是不可能的。现有说明包括我的 Visual Studio 版本中的 nonexistent 包还原功能。我已经尝试下载 NuGet 包,但我找不到关于如何使用它们的nothing。我可以从命令行做任何事情,所以目前我有一个构建后的事件可以做到这一点,但这很冒昧。
  • @AaronCarlson 是的。我想使用 NuGet 包中的 MSBuild 目标来生成项目的 NuGet 包。
  • 如果你是 VS 2015,那么创建一个 .xproj 可以节省你的时间,因为它直接生成 NuGet 包作为输出。
  • @LexLi 我不熟悉 .xproj。您能提供文档和/或示例吗?

标签: visual-studio msbuild visual-studio-2015 nuget


【解决方案1】:

为了方便使用,这是我的 NuGet.targets 文件。您发布的链接似乎具有相同的想法。 https://gist.github.com/makhdumi/71e7701b87b69f3cde1d/revisions

我将它与 MSBuild 命令一起使用,它运行良好,所以我假设在 VS2015 内部应该没问题。使用 /p:BuildPackage=true 运行 MSBuild 或取消注释此行以始终为具有 .nuspec 文件的项目构建包:

<!-- <BuildPackage>true</BuildPackage -->

要推送,您需要更多参数:

/p:PublishPackage=true;PackageDestination="https://<your-nuget-site.com>";PackageDestinationApiKey="<your-api-key>"

步骤

  1. 从 VS2013 解决方案复制 .nuget 文件夹。这应包含 nuget.targets、nuget.exe 和(可能)nuget.config。将 nuget.targets 替换为上面链接的那个。

  2. 修改您必须包含的每个 .csproj 文件(VS2013 中的 NuGet 会自动执行此操作):

    <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />`
    

【讨论】:

  • 我真的很想使用 NuGet 包,因此我不必将 NuGet 的东西保留在源代码管理中。你也能解决这个问题吗?
  • 您不需要 nuget.exe,因为 .targets 文件中的内容会自动下载。您必须保留 .targets 文件,如果您不使用 TFS 或使用 .tfignore 来忽略 packages/ 文件夹,我认为您可能会移除 .config 文件。关于 NuGet 包 - 在 VS2015 中不再需要它们,因为在任何构建之前通过运行 nuget restore 完成包还原(nuget.exe 可能与 VS2015 一起安装)
  • 我还看了新的VS2015包恢复,诚然好很多。您仍然可以通过运行 .targets 文件为您运行的 nuget.exe packagenuget.exe push 命令自动构建/发布包。我只会保留 .targets 文件,删除与构建包/推送无关的任何内容,并将其包含在您的所有项目中(将其命名为 nuget.targets 以外的名称)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2017-11-26
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多