创建大量非必需项目引用的NuGet包

创建大量非必需项目引用的NuGet包,nuget,visual-studio-2017,azure-devops-rest-api,Nuget,Visual Studio 2017,Azure Devops Rest Api,在升级到VS 2017和VSTS Online后,我正在审查我们的TFS访问代码 我在这个网站上发现,访问TFS库的推荐方法是通过 太好了,这肯定比从TeamExplorer安装文件夹中引用要好 然而,有问题的NuGet包添加了超过45个对我的项目的引用 我相信我只使用了4-6个 我发现其中讨论了包文件不必进入源代码管理这一事实 很高兴知道 但是,引用被添加为“Copy Local”,因此它们当前都被复制到我的输出目录中。这使得我的应用程序的大小增加了三倍多。这似乎不是一个好的做法 人们通常只是

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

我在这个网站上发现,访问TFS库的推荐方法是通过

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

然而,有问题的NuGet包添加了超过45个对我的项目的引用

我相信我只使用了4-6个

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

很高兴知道

但是,引用被添加为“Copy Local”,因此它们当前都被复制到我的输出目录中。这使得我的应用程序的大小增加了三倍多。这似乎不是一个好的做法

人们通常只是忽略了这一点,并与他们获得了巨大的依赖管理这一事实进行权衡吗

或者手动删除非必需的引用。。。?将来的更新是否会将引用放回原处

或者我是否以某种方式错误地使用了该软件包

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

人们通常只是忽略了这一点,并与他们获得了巨大的依赖管理这一事实进行权衡吗

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

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

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

或者手动删除非必需的引用。。。?做未来的更新 把参考资料放回去

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

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


希望这能有所帮助。

非常感谢您的回复。我试图说服我的团队的其他成员,创建一个本地NuGet提要可以解决我们的许多依赖性问题。我们有巨大的解决方案,应该分开。我打算通过一个本地的NuGet提要提供我们的源代码管理库来展示这个想法。然而,如果我的团队向我们拥有的每个需要源代码控制访问的项目添加45+个引用,我的团队就不会去碰这个库。我可以创建一个自定义包。但是这就破坏了NuGet的全部功能,因为我必须手动管理自定义包的依赖关系。我昨晚读了很多书,认为问题真正出在包创建者身上。我的理解是包应该比这个小。创造者似乎把所有东西都放在一个包中,而更小的包会更理想(我认为是时间限制)。理想情况下,将有多个较小的包,例如一个用于版本控制,一个用于构建,一个用于工作项,一个用于测试。我现在可能会自己从DLL手动创建这些文件。@JM,的确如此。但是这个软件包的作者,不可能知道每个人的要求,你只使用4-6个,其他人可能使用6-8个,所以这个软件包包括所有的参考资料。用户可以根据个人需要添加所需的dll文件。所以定制包应该是一个选项。此外,在nuget.org上,你还可以找到一些关于VSTSApi的定制包,例如TfsTestAPI。我认为Resharper是我的救星,但它显然将nuget包视为原子单位。我可以看到我引用了包中的2个DLL,但该工具只允许删除整个包(有道理,部分包并不理想)。还有其他扩展,但它们的评论不好,所以我想我被卡住了,必须回到从Team Explorer文件夹(或从附加到另一个虚拟项目的包或类似的东西)引用DLL。好的,我还将查看现有的自定义包:)