2010-12-15 39 views
1

有谁知道的方式大规模地从C#项目中排除特定的文件排除?我不想删除它们,并且我知道我可以将它们的各个属性设置为隐藏或使用.exclude扩展名来更改文件名,但是我想知道它们是否是Visual Studio中的一种方式来执行此操作。选择所有文件与一个特定的名称,并在C#

举例来说,如果我有1000个目录与文件名img.jpeg,我要排除的每个目录中的文件。

谢谢!

回答

0

如果您只是想从项目中删除它们(而不删除实际文件),请使用编辑器打开.csproj文件,该编辑器可以执行搜索并取代比记事本稍好的通配符(至少包含通配符)并删除条目为这些文件。保存.csproj文件并在Visual Studio中重新打开。

注:Visual Studio是这个一个相当不错的编辑器,因为它也有一个很好的和快速的多文件搜索替换&。您只需将.csproj作为文本文件打开,而不是双击它。

+0

看起来这比我的powershell脚本好多了:-) – Shoban 2010-12-15 18:18:36

0

你必须写一个应用程序或Visual Studio插件,从项目中排除的文件。就个人而言,我只想创建一个应用程序,请执行以下操作:

  1. 递归找到所有的.csproj文件中的代码树
  2. 打开通过加载到XmlDocument对象
  3. 使用XPath的cproj文件(如XmlDocument的.SelectSingleNode()/ SelectNodes())来查找相关文件的标签。
  4. 删除节点,并使用XmlDocument.Save

所以将文件保存回到磁盘它将使一个部分,看起来像这样:

<ItemGroup> 
    <EmbeddedResource Include="licenses.licx" /> 
    <EmbeddedResource Include="img.jpeg" /> 
</ItemGroup> 

是这样的:

<ItemGroup> 
    <EmbeddedResource Include="licenses.licx" /> 
</ItemGroup> 

示例XPath代码查找节点:

XmlDocument csprojDoc; // this is the document you loaded your csproj XML into 
XmlNamespaceManager xnm; // you'll need to build one of these because csproj files use namspaces in the XML 

XmlNode excludeNode = 
    csprojDoc.SelectSingleNode("//ns:ItemGroup/ns:EmbeddedResource[@Include='img.jpeg']", xnm); 

excludeNode.ParentNode.ChildNodes.Remove(excludeNode); 
相关问题