1

我想通过代码在 csproj 文件中搜索特定字符串。我该怎么做 ?

谢谢。

4

3 回答 3

1

.csproj 文件是 XML 文档,因此 XPath 似乎是满足您需求的合适工具。您可以在此处找到带有示例的介绍。. XPath 在包括 .NET 在内的广泛平台上受支持(此处为示例)。

对于您的需求,这可能是多余的,在这种情况下,正则表达式可能正是您正在寻找的东西(那里有大量的教程)。

只是好奇,你想达到什么目的?

在 .NET 中,您可能会编写如下内容:

XPathDocument Doc = new XPathDocument("foo.csproj);
XPathNavigator navigator = Doc.CreateNavigator();
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(navigator.NameTable);
namespaceManager.AddNamespace("pr", "http://schemas.microsoft.com/developer/msbuild/2003");
XPathNodeIterator iterator = navigator.Select(@"pr:Project/pr:ItemGroup/pr:Compile[@Include='AssemblyInfo.cs']", namespaceManager);

while (iterator.MoveNext())
{
   // Do something interesting
}
于 2009-10-06T10:09:53.520 回答
1

它只是一个 xml 文本文件。使用任何 xml 或文本文件技术来阅读它。

例如在 C# 中

string textToFind="someText";
string text = File.ReadAllLines("xxx.csproj");
if(text.Contains(textToFind)) Console.WriteLine("found it");
于 2009-10-06T10:11:36.217 回答
0

尝试这个:

using(StreamReader reader = new StreamReader("Project1.csproj"))
{
   string criteria = "sample";
   string line = "";
   int ln = 0;
   while((line=reader.readLine()) != null)
   {
       int col = line.indexOf(criteria);
       if(col != -1)
          Console.WriteLine(criteria + " is found in line: " + ln + " col: " + col);
       ln++;
   }
}
于 2009-10-06T10:14:15.687 回答