在CSPROJ文件中查找并删除重复条目



我们最近合并了两个代码分支,最终在.csproj文件中的几个文件中获得了重复条目。这似乎发生在所有需要复制到输出目录的文件中,以在进行此更改后始终更改并与其他分支合并。

我想知道,如果这样留下这样的问题以及我应该做的修复,这是否会引起任何意外问题。这是很多文件,所以我不想通过手动进行每个文件进行操作。它也不是全部文件,而是大量文件。我该怎么办?

以防其他人正在寻找一种自动执行此操作的方法,我为此整理了一个脚本:removecsprojduplicates.ps1

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

要使用

使用

。 removecsprojduplicates.ps1 -filepath [解决方案文件夹]

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

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

我第一次尝试时,我没有刷新解决方案资源管理器,也没有更改任何内容,但是在将其从项目中删除几次之后,刷新和切换显示了所有文件,包括它们,包括它们,只添加了一个一次参考它们,而不是我看到的两次。

真正使这一快速的原因是,我可以通过使用shift-click and ctrl lick选择我想使用的所有文件,包括在项目中,或将副本更改为输出目录设置。

我使用了Rodrigoff的.ps1文件(谢谢!),但是我必须将其修改以使我的项目编译,因为它没有搜索CSPROJ文件中的所有条目编译和内容我更改了这条代码:

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

to:

 $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

最新更新