Svn exgetals到Nuget迁移 - 关注

时间:2016-06-16 15:40:19

标签: c# visual-studio svn nuget

我使用庞大的项目从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如何在更大的项目中处理它的内容。

2 个答案:

答案 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/