【问题标题】:NuGet packages that create a large number of non-required project references创建大量非必需项目引用的 NuGet 包
【发布时间】:2018-01-03 14:53:45
【问题描述】:

在我们升级到 VS 2017 和 VSTS Online 后,我正在审查我们的 TFS 访问代码。

我从该站点上的another question 发现,访问 TFS 库的推荐方法是通过NuGetPackage

太好了,这肯定比从 Team Explorer 安装文件夹中引用要好。

但是,有问题的 NuGet 包向我的项目添加了超过 45 个引用。

我相信我只使用了其中的 4-6 个。

我发现this question 讨论了包文件不必进入源代码管理这一事实。

很高兴知道。

但是,引用已添加为“复制本地”,因此它们当前都被复制到我的输出目录中。这导致我的应用程序的大小增加了三倍以上。这似乎不是一个好的做法。

人们是否通常会忽略这一点并权衡他们正在获得出色的依赖管理这一事实?

或者手动删除不需要的引用...?未来的更新会放回引用吗?

或者我是否以某种方式错误地使用了包裹...?

这个网站上有很多 NuGet 问题。我确实搜索过,但如果这是重复的,请接受我的道歉。

【问题讨论】:

    标签: nuget visual-studio-2017 azure-devops-rest-api


    【解决方案1】:

    人们是否通常会忽略这一点并权衡他们正在获得出色的依赖管理这一事实?

    将所有依赖项添加到项目是 NuGet 的默认行为。目前,没有这样的选项,因此我们可以选择其中一些依赖项。

    虽然所有依赖项都作为“复制本地”添加到项目中,但当我们发布应用程序时,我们可以通过将发布状态从 Include (Auto) 更改为 Exclude 来排除那些不需要的依赖项:

    在这种情况下,那些非必需的引用不包含在应用程序中。

    或者手动删除不需要的引用...?做未来的更新 把引用放回去?

    是的,您可以手动删除那些非必需的引用,但是当您下次更新软件包时,那些已删除的引用将再次重新添加。

    此外,正如您所说,您只使用了其中的 4-6 个。您可以尝试自定义仅包含这 4-6 个引用的 nuget 包。

    Create nuget package from dlls

    希望这会有所帮助。

    【讨论】:

    • 非常感谢您的回复。我试图说服团队的其他成员相信,创建本地 NuGet 提要可以解决我们的许多依赖问题。我们有巨大的解决方案应该分开。我打算通过本地 NuGet 源提供我们的源代码控制库来展示这个想法。但是,如果它为我们拥有的每个需要源代码控制访问的项目添加了 45 多个引用,我的团队将不会接触该库。我可以创建一个自定义包。但这违背了 NuGet 的全部意义,因为我必须手动管理自定义包的依赖项。
    • 昨晚我做了很多阅读,并认为错误确实在于包创建者。我的理解是包裹应该比这个小。创作者似乎已经将所有东西都倾倒在一个包中,而较小的包会更优化(我假设由于时间限制)。理想情况下,会有多个较小的包,例如一种用于版本控制,一种用于构建,一种用于工作项,一种用于测试。我现在可能会自己从 dll 手动创建这些。
    • @JM,确实。但是包的作者,不知道大家的要求,你只用了4-6个,别人可能用6-8个,所以这个包包括所有参考。用户可以根据个人需要添加需要的dll文件。所以自定义包应该是一种选择。此外,在 nuget.org 上,您还可以找到一些关于 VSTSApi 的自定义包,例如 TfsTestAPI。
    • 我认为 Resharper 是我的救星,但它显然将 NuGet 包视为原子单元。我可以看到我正在从包中引用 2 个 dll,但该工具只允许删除整个包(有道理,部分包不理想)。还有其他扩展,但它们的评价很差,所以我认为我被卡住了,必须返回从 Team Explorer 文件夹(或从附加到另一个虚拟项目或类似的东西的包)中引用 dll。
    • 好的,我也会看看现有的自定义包:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多