Как я могу использовать файл SLN с MSBuild программно из C#?
Я пытаюсь создать собственный скрипт MSBuild в C#, используя более новую Microsoft.Build.Evaluation
API. У меня проблема в том, что этот новый API не поддерживает .sln
файлы. Старшее устарело Microsoft.Build.Engine
API поддерживает .sln
файлы, но я хотел бы использовать более новый, потому что 1) он не устарел и 2) кажется, что есть больше онлайн-документации и использования для ссылки. Я видел, что MSBuild может создать .metaproj
Когда файл успешно компилирует решение, когда это назначение выполняется в CMD: set MSBuildEmitSolution=1
, мне нужно .metaproj
файл, чтобы иметь возможность скомпилировать решение в первую очередь. Есть ли что-нибудь в API для конвертации .sln
в .metaproj
? Есть ли какая-нибудь библиотека для разбора .sln
файлы?
1 ответ
Я понял это после дополнительных поисков. Найти хорошие примеры в Интернете немного сложно из-за двух разных версий MSBuild API и популярности простого запуска MSBuild из командной строки.
Вот код, который теперь работает для меня, используя более новый API MSBuild:
var pc = new ProjectCollection();
var parameters = new BuildParameters(pc)
{
Loggers = new[] { _logger } //Instance of ILogger instantiated earlier
};
var request = new BuildRequestData(
projectFullPath: pathToMySlnFile, //Solution file path
globalProperties: myPropertyDictionary,
toolsVersion: null,
targetsToBuild: myTargetsArray,
hostServices: null,
flags: BuildRequestDataFlags.ProvideProjectStateAfterBuild);
var buildResult = BuildManager.DefaultBuildManager.Build(parameters, request);