2011-08-01 8 views
0

TFSドロップ場所にソリューションフォルダ名を取得するのに苦労しています。TFS 2010のソリューションフォルダ名を取得

私は、次のhirerchyで.NETソリューションファイルを持っている:

ソリューションファイル

- >ソリューションフォルダA - >プロジェクトA

- >ソリューションフォルダB - >をプロジェクトB &プロジェクトC

今、ドロップ先を上記のプロジェクト階層のようにカスタマイズする必要があります。

意味:ドロップ場所で、それは次のようになります。SolutionName - > SolutionFolderName - > ProjectNameの - > {出力を構築}

を私のビルドテンプレートで出力ディレクトリをカスタマイズ実装することにより、すなわち$(TeamBuildOutDir)\ $(SolutionNameを)\ $(MSBuildProjectName)、ソリューション名 - >プロジェクト名 - >ビルド出力を取得しています。

解決方法フォルダ名が出力を構成していません。誰も私のプロジェクトファイルから読むことができるようにこれを得る方法を提案することができます。 ありがとうございます。

+0

ソリューションフォルダはファイルシステムに存在しません。 –

+0

こんにちは、デーモンビー、ようこそstackoverflow。あなたの答えが以下に掲載されていることに気がつきました。物事をよりスムーズにするためのちょっとした助け、答えに「コメントを追加」を使って他の人の回答に返信するだけです。自分で解決したと思って解決策を共有したいと思うのであれば、自分の質問への回答を追加する必要があります。楽しむ! – Evolve

+0

完全なソースコードサンプルを扱った最終的な解決策はどれですか? – Kiquenet

答えて

0

ソリューションフォルダ名に対応するプロパティをプロジェクトで設定することができます(例:$(SolutionFolder))。次に、出力ディレクトリを$(TeamBuildOutDir)\$(SolutionFolder)に設定します。

0
public static TeamProject[] GetAllProjects(TfsTeamProjectCollection prjCollection) 
    { 
     var versionControl = prjCollection.GetService<VersionControlServer>(); 
     return versionControl.GetAllTeamProjects(true); 
    } 
    public static ProjectCollection GetAllIterations(TfsTeamProjectCollection prjCollection) 
    { 
     var wiStore = prjCollection.GetService<WorkItemStore>(); 
     return wiStore.Projects; 
    } 

    /// <summary> 
    /// function to get all system project name 
    /// </summary> 
    private void IterateFolder() 
    { 
     try 
     { var selectedProject = "EMRConversion"; 

      Project detailsOfTheSelectedProject = null; 

      var projCollections = GetAllIterations(prjCollection); 

      foreach (Project project in projCollections) 
      { 
       if (!String.IsNullOrEmpty(selectedProject)) 
       { 
        if (project.Name.ToString().Contains(selectedProject)) 
        { 
         detailsOfTheSelectedProject = project; 
         break; 
        } 
       } 
      } 

      if (detailsOfTheSelectedProject != null) 
      { 
       cmbSystemName.Items.Clear(); 

       foreach (Node area in detailsOfTheSelectedProject.AreaRootNodes) 
       { 
        if (!(area.HasChildNodes)) 
        { 
         cmbSystemName.Items.Add(area.Name); 
        } 

        foreach (Node item in area.ChildNodes) 
        { 
         cmbSystemName.Items.Add(item.Name); 
        } 
       } 


      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
+1

少しのテキストを追加できますか? – Rob

関連する問題