1

プロジェクトの依存関係 (プロジェクトを右クリックして [プロジェクトの依存関係] をクリック) がプログラムで正しく追加されているかどうかを確認したい。これどうやってするの?

正確に、

Qn- パート 1) ソリューション内のプロジェクトの "依存関係" (参照ではない) にアクセスするにはどうすればよいですか?

Qn- パート 2) プロジェクトのすべての依存関係が必要に応じて追加されているかどうかをどのように (csproj/sln... のようにどこで) チェックする必要がありますか?

csproj ファイルと sln ファイルを調べてみました。解析すると、追加された依存関係のリストが得られるプロパティ/アイテム グループが表示されませんでした。

この目的で EnvDTE を使用する必要があります。私はすでに Microsoft.Build.Evaluation Class を、私が行っている他のビルド操作の大部分に使用しています。それがプロセスをさらに複雑にするかどうかはわかりません。

お知らせ下さい。ありがとう!!

4

2 に答える 2

1

Visual Studio プロジェクト ファイルは実際には単なる XML であるため、理論的にはファイルを として読み込んで、見つかっXmlDocumentたすべてのReferenceノードを選択することができます。これは、参照がサンプル VB.net プロジェクト ファイルに格納される方法の例です。.csproj ファイルでもそれほど変わらないと思います。

  <ItemGroup>
    <Reference Include="System.Data.Linq" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Printing">
  </ItemGroup>

それができるようになったら、Include属性の値から参照名のコレクションを構築し、期待する参照が含まれていることを確認するのは簡単です。

プロジェクトが持つ明示的な参照も、暗黙的なプロジェクトの依存関係です。これらは [ソリューション プロパティ]ウィンドウに表示されますが、編集することはできません。

編集

明示的な参照に加えて手動で選択された、ソリューションのプロジェクトの依存関係を探している場合は、.sln ファイルでそれらを見つけることができます。

[ソリューション プロパティ]ウィンドウでプロジェクトの依存関係を手動で選択すると、 ProjectSection(ProjectDependencies)セクションがProjectのセクション内に作成されます。

たとえば、次は .sln ファイルの通常のプロジェクト エントリです。

Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MyProject",
"Source\MyProject\MyProject.vbproj",
"{AB5BA87B-77D5-4812-B02C-9B4FB87F4EF6}" EndProject

後でプロジェクトの依存関係を手動で追加した場合、そのプロジェクトは次のようになります。

Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MyProject", "MyProject\MyProject.vbproj", "{AC1BE764-AC53-47B0-9608-648C28D3BB79}"
    ProjectSection(ProjectDependencies) = postProject
        {10F4313B-A586-4CC6-BAFE-51930EC8C68F} = {10F4313B-A586-4CC6-BAFE-51930EC8C68F}
    EndProjectSection
EndProject

の追加に注意してくださいProjectSection(ProjectDependencies)

残念ながら、プロジェクト ファイルとは異なり、ソリューション ファイルは XML ではありません。これにより、ファイルをテキストとして直接解析することがより困難になります。また、ソリューション ファイル内のプロジェクトは GUID に関連付けられており、後でそれらを参照するセクションでは、プロジェクト名ではなく、その GUID が使用されます。また、GUID からプロジェクト名へのマップを作成するために、ソリューション ファイルに対して少し前処理を行う必要があるため、少し複雑になります。その時点で、ソリューション ファイルから明示的なプロジェクトの依存関係を一覧表示し、追加されたものが追加されることを期待していたものかどうかを比較できます。

于 2012-09-05T16:51:25.700 に答える
0

これは私が望むことを行います。sln ファイルを解析し、プロジェクトの GUID を抽出しました。

于 2012-09-10T14:43:15.583 に答える