1

.csproj ファイルに保存されている参照を Roslyn にフィードしようとしています。これは、ローカル ファイルがあれば簡単ですが、System などの「標準」アセンブリへの参照を追加するのに問題があります。どうすればよいですか (Roslyn、MsBuild などで)。Roslyn はファイル パスに基づく参照を受け入れるため、アセンブリを名前で (つまり、最初に読み込まずに) 追加することはできません。それともできますか?そうでない場合、プロジェクトの参照にリストされているアセンブリのパスを見つけるにはどうすればよいですか?

そこで参照されているアセンブリは、必ずしも GAC のものではないことを知っているため、さらに難しくなっています。

4

2 に答える 2

1

Roslyn については不明ですが、通常の CSharp プロジェクトでは、通常の CSharp コンパイラ (CSC.exe) に c:\Program Files (x86)\Reference Assemblies\Microsoft\ からの dll をフィードします。

サンプル ソリューションの構築

これらの参照アセンブリを試すことをお勧めします (VS をインストールするときに、この目的のために意図的に PC にコピーされます)。

于 2013-10-27T15:57:50.500 に答える
0
[Test]
public void MsBuildPropertyContainsRefeerenceAssemblyFolder() {
    var project = new Project(@"D:\\Projects\\Chpokk\\src\\Chpokk.Tests\\Chpokk.Tests.csproj");
    var property = project.AllEvaluatedProperties.First(projectProperty => projectProperty.Name == "FrameworkPathOverride");
    Console.WriteLine(property.EvaluatedValue);
}

(上に追加する必要がありますusing Microsoft.Build.Evaluation;

実際、これは注目すべき man フォルダーの 1 つにすぎませんが、最も明白なフォルダーです。完全なリストはプロパティから取得できAssemblySearchPaths、レジストリにあるフォルダーが含まれます。

于 2013-10-28T20:21:26.973 に答える