我在一个拥有多个分支的大型团队中工作,并定期进行合并。
经常发生的一件事是 Web 项目文件最终会出现静态内容(.js、favicon.ico 等)的重复条目。
我有两种删除重复项的方法:
- 删除项目资源管理器中的项目(删除所有条目以及磁盘文件),然后再次从源代码管理中获取文件并将其添加回来。
- 卸载项目文件,查找重复项,删除它们(希望它们彼此靠近),然后重新加载项目。
两者都很乏味,我对它们不满意 - 你有更好/更快/更快的方法吗?
我在一个拥有多个分支的大型团队中工作,并定期进行合并。
经常发生的一件事是 Web 项目文件最终会出现静态内容(.js、favicon.ico 等)的重复条目。
我有两种删除重复项的方法:
两者都很乏味,我对它们不满意 - 你有更好/更快/更快的方法吗?
最简单的方法是简单地右键单击副本并选择“从项目中排除”选项。刷新项目后,重复项将消失。
对于桌面应用程序,最烦人的事情是 VS 只会告诉你它遇到的第一个副本,而且你必须在每次修复后一遍又一遍地重建。这是一个简单的 LINQ pad 脚本,当我需要在合并后清理内容时使用它:
var hash = new HashSet<string>();
using (var fs = File.OpenRead(@"path\to\csproj\file"))
using (var sr = new StreamReader(fs))
{
while (!sr.EndOfStream)
{
var line = sr.ReadLine().Trim();
if (line.StartsWith(@"<Reference") || line.StartsWith(@"<Compile") || line.StartsWith(@"<Page"))
{
if (!hash.Add(line))
{
line.Dump();
}
}
}
}
它列出了在.csproj
文件中找到的所有重复项(我希望 VS 现在自己做的事情,但是哦,好吧,也许再过 10 年)。您仍然必须手动删除重复项,但拥有完整列表会大大加快速度。