У меня есть решение, которое строится по сравнению с Когда я загружаю его с 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? Как я могу узнать, что все ссылки, которые мне нужно добавить?
В идеале я хотел бы, чтобы ссылки разрешались автоматически, но было бы неплохо использовать указатели для построения всех необходимых ссылок на метаданные из информации в файлах проекта ...