c# - Nuget 迁移的 Svn 外部 - 关注点

标签 c# visual-studio svn nuget

我正在从 Svn 外部功能迁移到 nuget 一个巨大的项目,到目前为止这看起来是一个错误的决定。我的解决方案之一包含 70 个项目,其中大部分包含相同的公共(public)引用(nuget 包)。 以前的结构是每个解决方案的公共(public) Lib 文件夹,其中包含由 svn externals 控制的所有引用,所以每当我想更新版本时,我只需更新 tortoise svn 中的数字并单击更新 - 快速工作。 目前,当我从 Visual Studio 内部执行此操作时,它需要 10-20 倍的时间,因为我怀疑它从包中删除了以前版本的包目录,添加了新目录,更新了 packages.config 版本并更新了 csproj 路径。因此,如果我在 70 个项目中更新 7 个包并且我打开了 visual studio,则需要更长的时间。替代方法是关闭解决方案并在 命令行 中调用 nuget 更新,但这是一种解决方法。以前路径是相同的,packages.config 的概念不存在,所以唯一的变化是文本文件中的几行代码,我们得出下一个结论 - 源代码控制更改。每当我进行更新时,都会有大量更改需要 checkin 源代码管理,我发现它有点困惑。我发现 nuget install -ExcludeVersion 有一个标志,它将从路径中排除版本,因此 csproj 不会被更改,这是一个很大的优势。使用它是一个很好的约定吗?是否支持 Visual Studio 在我安装包时自动使用它?有没有办法将 nuget 包标记为“忽略路径中的版本”?据我所知,这些问题的答案是不,不,不。你如何处理在更大的项目中使用 nuget?如果我可以阅读有关 nuget 如何在更大的项目中处理它的内容,请告诉我。

最佳答案

让我们逐一解决每个问题。你的第一个问题是:

Is it a good convention to use it?
这取决于意见。如果在安装时使用 ExcludeVersion 选项会破坏您的项目,那么您就不能使用它。否则,它会在推送时为您节省 70 个文件。第二个问题是:
Is there are support for Visual Studio to use it automatically whenever I install a package?
据我所知(我可能是错的),没有办法做到这一点。然而,这是快速研究的结果,更多信息可能会在 Nuget Config File Defaults 的深处找到。 (我找不到这样的配置)。

我有点不明白你的意思

Is there a way to mark a nuget package as "Ignore version in path"?
但是,您的意思似乎是 Colonel Panic 在这个问题中提出的问题:Nuget Packages exclude version in folder naming ,其中答案是否定的。最后,你简单地问了这个问题:
How do you handle using nuget in bigger projects?
不幸的是,这个问题的答案很简单:你不能(至少不是有效的)。 Nuget 自己在 blog post 中这样说从 2014 年 10 月 10 日开始。如果你阅读他们的“有害后果”部分,你会发现很多你遇到的问题。

好的,现在进入解决方案。我过去曾遇到过类似的 Nuget 问题,解决方案非常简单。为了尽量减少时间,我所要做的就是使用 Visual Studio 的 .gitignore 从命令行使用 Git(我相信 Svn 也可以)。我知道我们都会感谢 Nuget 在这些情况下工作;然而,这种情况并非如此。由于您已经使用 svn,我建议不要更改。毕竟,Nuget 实际上只是 Visual Studios 内部在解决方案基础上工作的宏。

关于c# - Nuget 迁移的 Svn 外部 - 关注点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863701/

相关文章:

visual-studio - 尝试从 Docker 中的 VS 运行时出现错误 "getcwd() failed: No such file or directory"

angular - 应该在 SVN 中为 Angular 项目提交哪些文件?

svn - 如何重新集成分支,覆盖尚未合并到分支中的主干更改?

svn - 通过 SVN 下载小文件快,大文件慢

c# - 我可以将 Microsoft Graph SDK 与 Azure AD Easy Auth 结合使用吗

c# - 将 bool[] 增长为位(特定线性方式!= >> || <<)

c++ - 是否可以在没有 PDB 文件的情况下在 Windows 上获取堆栈跟踪?如果是,如何?

c# - 将一个数组与另一个数组进行匹配

c# - ToList()、Any()、Count()、Sum() 上的 Linq 错误

.net - 调试器没有进入不同的项目