Как программно скомпилировать. net core 3.1 приложение? - PullRequest
0 голосов
/ 20 марта 2020

Есть ли способ скомпилировать приложение 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?

...