我正在将测试项目添加到项目主git存储库中的许多解决方案中。
在此过程中,我注意到在.sln文件中添加“解决方案文件夹”会修改解决方案中的许多项目。我认为没有逻辑原因会是这种情况。我只是在谈论添加解决方案文件,而在我添加测试项目之前。
该解决方案中的所有项目都是C#项目,如果有什么不同的话。
有人知道为什么会这样吗?这是预期的行为还是错误?还有,有什么办法可以防止这种情况的发生?
下面的两个图像突出了我正在谈论的行为:
添加新的解决方案文件夹之前:
添加新的解决方案文件夹后:
据我所知,这些更改毫无意义:
答案 0 :(得分:2)
这有点奇怪,但是当人们有多个解决方案并将外壳固定在一个解决方案中,而不是另一个解决方案中时,就会发生这些事情。当项目文件被重新渲染时(因为添加了项目,重命名,更改了解决方案项等),那么它将选择更正的大小写。如果解决方案文件的大小写为“正确”,则不会有任何更改,但是如果解决方案文件不匹配,则可能导致级联。
在一种解决方案中固定外壳可能会在另一种解决方案中触发相反的行为。因此,必须立即在所有解决方案文件中修复此问题。如果有多个分支,请小心。
解决此问题的最佳方法是一次性解决文件系统,项目文件和解决方案文件中的大小写问题。通常,使用文本编辑器比通过Visual Studio项目系统更容易。正则表达式搜索和替换可以在这里创造奇迹。确保一次性修复所有这些问题:
.*proj
文件.*proj
文件中的引用固定单个项目的大小写时,更改可能会级联到引用有问题的项目的其他项目文件中。项目文件中的ProjectReference
元素具有到有问题的项目的相对文件系统路径,并捕获其名称。您可以在发布的屏幕截图中清楚地看到这一点: