Есть ли способ скомпилировать приложение WebAPI из консольного приложения в. NET Core 3.1?
Я пробовал много разных подходов, таких как:
1.
var collection = ProjectCollection.GlobalProjectCollection;
var project = collection.LoadProject($@"{path}\Project.csproj");
project.SetProperty("Configuration", configuration);
project.Build();
(путь к .sln)
ОШИБКА : MSB4041: пространством имен XML проекта по умолчанию должно быть пространство имен MSBuild XML.
2.
new Microsoft.Build.Execution.ProjectInstance("PathToProject.sln").Build();
(путь к .sln)
ОШИБКА : Microsoft.Build.Exceptions.InvalidProjectFileException: 'Не удалось загрузить файл проекта. Данные на уровне root недопустимы.
(путь к .csproj)
ОШИБКА : Microsoft.Build.Exceptions.InvalidProjectFileException: «SDK» Microsoft. Указанный NET .Sdk.Web 'не найден.
3.
ProjectCollection pc = new ProjectCollection();
Dictionary<string, string> GlobalProperty = new Dictionary<string, string>();
GlobalProperty.Add("Configuration", "Debug");
GlobalProperty.Add("Platform", "Any CPU");
GlobalProperty.Add("OutputPath", Directory.GetCurrentDirectory() + "\\MyOutput");
BuildParameters bp = new BuildParameters(pc);
BuildManager.DefaultBuildManager.BeginBuild(bp);
BuildRequestData BuildRequest = new BuildRequestData(projectFilePath, GlobalProperty, null, new string[] { "Build" }, null);
BuildSubmission BuildSubmission = BuildManager.DefaultBuildManager.PendBuildRequest(BuildRequest);
BuildSubmission.Execute();
BuildManager.DefaultBuildManager.EndBuild();
if (BuildSubmission.BuildResult.OverallResult == BuildResultCode.Failure)
{
throw new Exception();
}
(оба пути к .sln и .csproj)
ОШИБКА : Результатом сборки является сбой без зарегистрированного исключения
Однако ни один из подходов не сработал. Поэтому мне интересно, можно ли вообще скомпилировать код. NET Core 3.1 WebAPI?