【问题标题】:How to use nuget packages in deployment for a visual studio solution如何在 Visual Studio 解决方案的部署中使用 nuget 包
【发布时间】:2018-04-27 14:34:47
【问题描述】:

我有一个包含多个 c# 项目的解决方案。其中一些项目有 nuget dll 作为参考。 默认情况下,nuget 将所有 dll 拉到解决方案文件夹中名为 packages 的文件夹中(这些 dll 可能依赖于其他 nuget dll,因此 nuget 也将它们拉到 packages 文件夹中)。这适用于正常构建。

现在我想将我的应用程序部署在一个文件夹中的所有 .dll 文件中。将所有 nuget dll 收集到该文件夹​​中的最佳方法是什么。

注意:将 Nuget 引用添加到项目时,CopyLocal 默认设置为 true,因此 nuget dll 会复制到该项目的 bin 文件夹中。所以,我可以在那里拉出那些 dll。但我不确定如何提取二阶依赖项(我引用的 nuget dll 所依赖的其他 nuget dll),因为它们没有复制到项目的 bin 文件夹中。

【问题讨论】:

  • 构建命令应该为您将所有必要的内容(包括所有次要依赖项)移动到 bin 文件夹中。由于某种原因,这不起作用吗?另外,如果您正在准备部署,您是否尝试过在 Visual Studio 中使用发布命令?

标签: c# .net visual-studio nuget nuget-package


【解决方案1】:

但我不确定如何提取二阶依赖项(我引用的 nuget dll 所依赖的其他 nuget dll),因为它们没有复制到 projec 的 bin 文件夹中

根据文档Dependency resolution

任何时候安装或重新安装软件包,包括 作为还原过程的一部分安装,NuGet 还安装任何 第一个包所依赖的其他包。

那些直接依赖可能也依赖于 它们自己的,可以继续到任意深度。

因此,当我们在项目中安装一个 nuget 包时,NuGet 会将 nuget 包 dll 及其依赖项添加到项目中。此外,NuGet 会将依赖项的CopyLocal 属性默认设置为True。在这种情况下,所有依赖项也将被复制到bin 文件夹中。

比如我们将nuget包Microsoft.Owin安装到Asp.net应用项目时,它的依赖owin也会默认安装到项目中,CopyLocal的属性也设置为@987654328 @ 默认情况下。安装完成后,依赖owin会复制到bin文件夹中。

所以,为了解决这个问题,请确保已安装的nuget包的依赖也添加到项目中,并检查CopyLocal的属性是否设置为True

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多