1

我正在尝试向 Roslyn 提供存储在我的 .csproj 文件中的引用。如果我有一个本地文件,这很简单,但是我在为“标准”程序集(如 System 等)添加引用时遇到问题。我该怎么做(在 Roslyn、MsBuild 或其他中)?Roslyn 接受基于文件路径的引用,所以我不能只按名称添加程序集(即,不先加载它)。或者我可以吗?如果没有,我如何找到项目引用中列出的程序集的路径?

我知道那里引用的程序集不一定来自 GAC,这使得它更加困难。

4

2 回答 2

1

不确定 Roslyn,但通常的 CSharp 项目使用来自 c:\Program Files (x86)\Reference Assemblies\Microsoft\ 的 dll 提供通常的 CSharp 编译器 (CSC.exe):

构建示例解决方案

我建议您尝试这些参考程序集(当您安装 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 文件夹之一,但却是最明显的一个。完整的列表可以通过AssemblySearchPaths属性获得,包括在注册表中找到的文件夹。

于 2013-10-28T20:21:26.973 回答