这是我以前使用过的代码:
MSBuildWorkspace msBuild = MSBuildWorkspace.Create();
Solution sln = await msBuild.OpenSolutionAsync(solutionPath);
但是现在我得到了:
int pr = sln.Projects.Count();//is 1 instead of 2.
和:
int docs = sln.Projects.First().Documents.Count();//is 0
他们再次更改了吗?
((如果重要,我需要Solution
才能遍历字段等并使用Renamer.RenameSymbolAsync。)
我的操作方式如下:
if (!MSBuildLocator.IsRegistered) MSBuildLocator.RegisterDefaults();
using (var w = MSBuildWorkspace.Create())
{
var sln = await w.OpenSolutionAsync(solutionPath);
}
我相信MSBuildLocator.RegisterDefaults()
是这里缺少的部分。它可以确保您的VS版本使用正确的msbuild路径。可能是您的环境路径正确,但是随后您又安装了VS的另一个实例,因此感到困惑[]