【发布时间】:2019-11-05 02:17:37
【问题描述】:
我有一个内置的解决方案。当我像这样用 roslyn 加载它时:
var workspace = MSBuildWorkspace.Create();
var solutionPath = @"c:\path\to\my.sln";
var solution = workspace.OpenSolutionAsync(solutionPath).Result;
那么所有项目都有 0 个元数据引用。
如果我尝试从这样的引用程序集中获取类型:
var compilation = solution.Projects.First().GetCompilationAsync().Result;
var myType = compilation.GetTypeByMetadataName("SomeTypeNanme);
它永远找不到类型。如果我像这样手动添加元数据引用:
var project = project.AddMetadataReference(AssemblyContaningTheType);
然后它可以找到类型。
我的解决方案以 .NET Framework 4.5.2 为目标,以防万一
这是解决引用的唯一方法,即手动添加元数据引用吗?难道不能通过引用都在csproj中的事实来完成吗?我怎么知道我需要添加哪些参考资料?
理想情况下,我希望自动解析引用,但可以使用从项目文件中的信息构建所有必要的元数据引用的指针...
【问题讨论】:
-
在没有附加调试器的情况下运行代码时是否会出现此问题?另请参阅有关
MSBuildWorkspace可能需要的一些绑定重定向的答案:stackoverflow.com/a/55111549/300908