【发布时间】:2020-05-28 20:25:25
【问题描述】:
背景:
我对打包和发布 nuget 相当陌生。长话短说,我有一个 C# 项目(我们称之为 MYAPI 项目),它依赖于一堆其他的 nuget 包。 MYAPI 的一些消费者希望将其作为 nuget 包引用并自行处理其产品的部署,而另一些消费者则希望将 MYAPI dll 安装在特定文件夹中,他们将在运行时从中获取它。
所以我已将 MYAPI 打包为 nuget 并将其发布到内部 nuget 服务器上。
问题:
如何将我的 nuget 包安装到服务器上,使其具有所有必需的依赖项。我希望它看起来像bin\debug 文件夹的样子,即基于目标框架,从所有依赖 nuget 包中复制相关文件,包括主 nuget 包(在本例中为 MYAPI)
我知道除了 nuget 包之外,我可以通过将 MYAPI 打包为 zip 文件或 msi 来实现这一点。但我不想要 MYAPI 的多种类型的包,并且宁愿只使用 nuget 包。我也明白我可以在 nuspec 的 <files> 部分引用所有依赖项,但我认为这是一个穷人的做法。
有没有办法像 Visual Studio 那样做,即下载主 nuget 包及其所有依赖项,提取它们,然后将所有提取的 nuget 包中的相关(基于框架版本)文件复制到 bin\debug文件夹。如果开箱即用不可用,有人可以指出我使用 VS 将文件复制到 bin\debug 文件夹的“智能”,以便我可以在安装脚本中复制它。
编辑:
这是一个常规的 .NET Framework 项目,我说的是在生产服务器上安装,其中 MSBuild、VS 等开发工具不可用。我仍然可以使用 nuget.exe 命令,因为它是一个可执行文件。
【问题讨论】:
-
执行 nuget 还原。无需安装。它是一个什么样的 c# 项目? .net 核心还是框架?
-
您应该构建一个已发布的输出副本。
-
这是正确的做法。有很多托管的 ci 服务
-
Nuget 应该为你处理依赖项
-
@DanielA.White 情况是来自 repo 的 nupkg 文件具有它需要的所有信息,但是没有可以在 prod 服务器上运行的命令来获取所有文件,包括依赖项,这是我的 dll 要求的,以便在运行时使用
Assembly.LoadFrom来加载我的 dll 的另一个产品有用。我已经为在构建时与我链接的消费者提供了它,因为他们的 VS 有这样做的智能
标签: c# .net visual-studio nuget continuous-deployment