2012-02-21 15 views
0

C#Microsoft.Build.Evaluation.Projectクラスを使用して、TargetFramework、AssemblyName ...などのVSプロジェクトファイルから特定の情報を取得しています。しかし、プロジェクトがWebプロジェクトであるかどうかを識別する方法やプロパティ名を見つけることができません。フレームワーク1.1のVSプロジェクトでは、このようなXML解析を使用しています。VSプロジェクトがWEBアプリケーションまたはWindowsアプリケーションに属しているかどうかを確認する方法

string path = "C:\\Test.csproj"; 
XElement root = XElement.Load(path); 
var type = from el in root.Elements("CSHARP") 
      select el.Attribute("ProjectType"); 
if (type.Count() > 0) 
{ 
    // Local or Web 
    return((XAttribute)type.First()).Value); 
} 

誰かがこの問題を解決するために私に財産の名前または別の提案を与えることができたら、私は感謝します。

ありがとうございます。

私の完全なメソッドのコード

public bool IsWeb(string path) 
    { 
     bool isWeb = false; 
     try 
     { 

      Project project = new Project(path); 

      // I dont know the name of the propety to identify if its a web project 

      //string type = project.GetPropertyValue(); 
      //if (type.Equals("Web")) 
      //{ 
      // isWeb = true; 
      //} 

     } 
     catch (InvalidProjectFileException) 
     { 
      //It's fw 1.1 
      XElement root = XElement.Load(path); 
      var type = from el in root.Elements("CSHARP") 
         select el.Attribute("ProjectType"); 

      if (type.Count() > 0) 
      { 
       if ((((XAttribute)type.First()).Value).Equals("Web")) 
       { 
        isWeb = true; 
       } 
      } 

     } 
     return isWeb; 
    } 

答えて

0

私はいくつかのプロジェクトファイルを通り抜けました。私のmvcプロジェクトの1つでは、PropertyGroupノードにあるこのノードが<MvcBuildViews>であることがわかりました。あなたの質問に対する答えは間違いありませんが、作業していたよりも多くの情報のようです。

+0

プロジェクトにタグがありますか? – Radolan

+0

ええ、プロジェクト拡張で – deltree

0

プロジェクトタイプguidがknown typesのいずれかに属しているかどうかを確認できます。

関連する問題