查找并删除csproj文件中的重复条目

时间:2016-06-24 19:47:56

标签: tfs visual-studio-2015

我们最近合并了两个代码分支,最终得到了.csproj文件中几个文件的重复条目。这似乎发生在所有需要复制到输出目录的文件发生变更为复制之后,所有这些文件都是在完成更改并与其他分支合并之后。

我想知道这是否会导致任何意外问题,如果它留下这样,我该怎么做才能解决它。这是很多文件,因此我不想手动完成每个文件的操作。它也不是所有文件,但它是大量文件。我该怎么办?

3 个答案:

答案 0 :(得分:8)

如果其他人正在寻找自动执行此操作的方法,我会为此编制一个脚本:RemoveCsProjDuplicates.ps1

该脚本将在提供的文件夹中找到所有csproj文件,删除所有重复项并保存文件。

仅使用

  

。\ RemoveCsProjDuplicates.ps1 -filePath [Solution folder]

随意使用并根据您的需求进行调整

答案 1 :(得分:2)

我最终做的是从项目中删除受影响的所有文件,刷新解决方案资源管理器并显示所有文件,包括不再在项目中的文件,然后将文件重新包含到项目中。

我第一次尝试时我没有刷新解决方案资源管理器并且它没有改变任何内容,但是在刷新和切换之后显示/隐藏所有文件几次后从项目中删除它们,包括它们后面只添加了对它们的引用,而不是我看到的两倍。

真正做到这一点的是我可以通过使用shift-click和ctrl-click选择我想要使用的所有文件,然后右键单击以对象执行任何操作,例如从项目中排除,包括在项目中,或将副本更改为输出目录设置。

答案 2 :(得分:0)

我使用了rodrigoff的.ps1文件(谢谢!),但是我不得不对其进行修改以进行项目编译,因为它没有在csproj文件中搜索所有条目,而只是在搜索Compile和Content。 我更改了以下代码行:

 $entries = $xml.Project.ItemGroup.Compile + $xml.Project.ItemGroup.Content | Group-Object Include

收件人:

 $entries = $xml.Project.ItemGroup.Compile + $xml.Project.ItemGroup.Content +$xml.Project.ItemGroup.Reference + $xml.Project.ItemGroup.EmbeddedResource + $xml.Project.ItemGroup.None + $xml.Project.ItemGroup.Page + $xml.Project.ItemGroup.Resource + $xml.Project.ItemGroup.ProjectReference + $xml.Project.ItemGroup.Folder | Group-Object Include