Для настольных приложений самым раздражающим является то, что 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 лет).Вам все равно придется удалять дубликаты вручную, но наличие полного списка значительно ускоряет процесс.