【发布时间】:2020-03-20 19:21:39
【问题描述】:
有没有办法在 .NET Core 3.1 中从控制台应用程序编译 WebAPI 应用程序?
我尝试了很多不同的方法,例如:
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:'无法加载项目文件。根级数据无效。
(.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 代码?
【问题讨论】:
-
什么
did not work?你面临的问题是什么?您是否尝试过从代码中运行dotnet build命令? -
对我来说,调用
dotnet build可以,但在服务器上运行需要 15 分钟。它在本地非常快,因此它可能对您有用。我创建了一个new Process及其StartInfo = "dotnet"和Arguments = $"build {solutionFilePath} --configfile {nugetConfigPath} --nologo --verbosity minimal"
标签: c# asp.net-core compilation .net-core-3.1