visual-studio - 自动构建 NuGet 包,包括引用的依赖项

标签 visual-studio build-automation nuget nuget-package

我想要run a local/internal NuGet repository 。我想我已经弄清楚如何“重用”现有的 NuGet 包,方法是将它们包含在使用 NuGet 的虚拟项目中并将包文件扫描到 grab my locally-cached .nupkg files ,但是...

如何从项目创建 nuget 包 ( .nupkg ),自动包含全部 dll依赖项而不仅仅是通过 NuGet 获取的依赖项?

具体:

  1. 创建解决方案
  2. 添加新项目
  3. 添加对各种 .dll 的引用文件/其他项目<--这是缺少的部分
  4. 通过包管理器/cmdline/其他方式添加 NuGet 包
  5. 某些东西会自动创建 .nupkg

根据我的发现,你应该做类似的事情

  • 手动编辑您的.csproj文件添加<BuildPackage>true</BuildPackage>包含依赖项
  • 手动创建 .nuspec文件并手动list your dependencies (similar ?)
  • 手动运行nuget pack在您的.nuspec上文件

但是一切都是手动的,这很愚蠢。即使是半自动解决方案仍然很笨拙或半手动:

我会选择自动创建 .nuspec 的东西来自项目引用的 list 。那么理论上来说,nuget build-event 可以汇总到 build-project/nuget 包中,这才是我真正希望看到的。

最佳答案

你的观点#3(添加对各种.dll文件/其他项目的引用<--这是缺少的部分)实际上包含两个不同的问题:(1)添加对各种dll文件的引用, (2) 添加对同一解决方案中其他项目的引用。

NuGet 2.5 起,这里的数字 (2) 已获得一些额外的支持。为项目创建 NuGet 包时,您可以添加一个选项以包含对同一解决方案中其他项目的引用:

nuget pack projectfile.csproj -IncludeReferencedProjects
  • 如果 projectfile.csproj 引用解决方案中也公开为 NuGet 包的任何其他项目,这些项目的 NuGet 包 将作为依赖项添加。
  • 如果它引用您的解决方案中将自身公开为 NuGet 包的项目,则它们的 dll 将包含在此 NuGet 包中。

对于 (1),如果您发现自己经常向项目中添加不能作为 NuGet 包提供的 dll,则可以使用这些文件创建您自己的(内部)NuGet 包。如果您随后将这些 dll 添加为 NuGet 包而不是直接添加文件,则此 NuGet 包将成为项目 NuGet 包中的依赖项。

关于visual-studio - 自动构建 NuGet 包,包括引用的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173568/

相关文章:

c++ - 更改项目以运行 VS2012 C++

c++ - 如何在 Visual Studio C++ 中创建自己的 .lib 文件

c# - 有没有办法在 Google Code 上自动构建开源项目?

类似于 Compass 的 Javascript 构建工具?

c# - 由于错误,可以从 VS Code 构建和部署 azure 函数

nuget - 为什么在安装autofac时,我的所有web.configs都使用程序集重定向进行更新?

asp.net - Microsoft.VisualStudio.Web.PageInspector.Runtime.NativeMethods.CloseHandle

build-automation - Sublime Text 2 : build system custom selector

powershell - 使用命令行检查nuget包是否存在

c# - 这个 .wixproj 文件的 $(WixTargetsPath) 属性在哪里设置?