我使用庞大的项目从Svn externals功能迁移到nuget
,到目前为止看起来是一个糟糕的决定。我的解决方案之一包含70个项目,其中大多数项目包含相同的公共引用(nuget包)。
以前的结构是每个解决方案的常见Lib文件夹,其中包含由svn externals
控制的所有引用,因此每当我想更新版本时,我只更新了togoise svn中的数字并点击了更新 - 快速工作。
目前,当我从Visual Studio内部执行此操作时,它需要10-20倍的时间,因为我怀疑它从包中删除了以前版本的包目录,添加了新目录,更新了packages.config
版本和更新csproj
路径。因此,如果我在70个项目中更新7个包,并且我打开了visual studio,则需要更长的时间。另一种方法是关闭解决方案并在command-line
中调用nuget更新,但这是一种解决方法。以前的路径是相同的,packages.config
的概念并不存在所以唯一的变化是文本文件中的几行代码,我们得出下一个结论 - 源代码控制的变化。每当我进行更新时,都会有大量的更改需要在源代码管理中进行检查,我发现它有点乱。我发现nuget install -ExcludeVersion
有一个标志,它将从路径中排除版本,因此csproj不会被更改,这是一个很大的优势。使用它是一个很好的习惯吗?是否支持Visual Studio在安装软件包时自动使用它?有没有办法将nuget包标记为"忽略路径中的版本"?据我所知,这些问题的答案是否,不,不。你如何在更大的项目中使用nuget?请知道我是否可以阅读有关nuget如何在更大的项目中处理它的内容。
答案 0 :(得分:2)
让我们逐一解决每个问题。你的第一个问题是:
使用它是一个好习惯吗?这是受意见的。如果它会破坏您的项目以在安装时使用
ExcludeVersion
选项,那么您将无法使用它。否则,它会在推送时为您节省70个文件。第二个问题说明:每当我安装软件包时,是否支持Visual Studio自动使用它?据我所知(我可能错了),没有办法做到这一点。然而,这是快速研究的结果,更多的信息可以在Nuget Config File Defaults内部找到(我找不到这样的配置)。
我对你的意思有点困惑
有没有办法将nuget包标记为“忽略路径中的版本”?但是,似乎你的意思是恐慌上校在这个问题中提出的问题:Nuget Packages exclude version in folder naming,答案是否定的。最后,你简要问一下这个问题:
你如何处理在更大的项目中使用nuget?不幸的是,这个问题的答案很简单:你不能(至少没有效率)。 Nuget自己在2014年10月10日的blog post中说出这一点。如果您在“有害后果”部分下面阅读,您可以看到许多问题。
好的,现在进入解决方案。我过去遇到过与Nuget类似的问题,解决方案非常简单。我所要做的就是尽可能减少时间是使用Visual Studio的.gitignore
从命令行使用Git(Svn我认为也可以)。我知道我们都会欣赏Nuget在这些情况下工作;然而,这种情况并非如此。因为你已经使用过svn,我建议你不要改变。毕竟,Nuget实际上只是Visual Studios中一个基于解决方案的宏。
答案 1 :(得分:1)
我的问题的答案是project.json。我不知道即使在WPF中我也可以在每个项目中使用它。 https://oren.codes/2016/02/08/project-json-all-the-things/