选择具有特定名称且在C#中排除的所有文件

时间:2010-12-15 18:06:27

标签: c# visual-studio-2010

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

例如,如果我有1000个文件名为img.jpeg的目录,我想从每个目录中排除该文件。

谢谢!

2 个答案:

答案 0 :(得分:0)

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

注意:Visual Studio是一个非常好的编辑器,因为它还具有良好和快速的多文件搜索和替换。您只需将.csproj作为文本文件打开,而不是双击它。

答案 1 :(得分:0)

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

  1. 以递归方式查找代码树中的所有.csproj文件
  2. 通过将cproj文件加载到XmlDocument对象
  3. 中来打开它
  4. 使用XPath(例如XmlDocument.SelectSingleNode()/ SelectNodes())查找相关文件的标记。
  5. 删除节点并使用XmlDocument.Save
  6. 将文件保存回磁盘

    所以它会产生一个看起来像这样的部分:

    <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);