Как найти в файле csproj строку через код? - PullRequest
1 голос
/ 06 октября 2009

Я хочу найти в файле csproj определенную строку с помощью кода. Как я могу это сделать?

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 октября 2009

это просто текстовый файл xml. Используйте любую технологию XML или текстового файла, чтобы прочитать ее.

например. в с #

string textToFind="someText";
string text = File.ReadAllLines("xxx.csproj");
if(text.Contains(textToFind)) Console.WriteLine("found it");
1 голос
/ 06 октября 2009

.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
}
0 голосов
/ 06 октября 2009

попробуйте это:

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++;
   }
}
...