能否使用MSBuild从代码构建asp.net core项目?

3

我希望使用另一个C#项目构建asp.net core项目。以下是示例代码。(我使用的是Visual Studio 2015)

var projectCollection = new Microsoft.Build.Evaluation.ProjectCollection(Microsoft.Build.Evaluation.ToolsetDefinitionLocations.Registry);
projectCollection.DefaultToolsVersion = "14.0";
projectCollection.RegisterLogger(new Microsoft.Build.Logging.ConsoleLogger(Microsoft.Build.Framework.LoggerVerbosity.Detailed));
var project = projectCollection.LoadProject(@"H:\Development\WebApplication22\src\WebApplication22\WebApplication22.xproj");
bool b = project.Build();

它给了我很多错误。以下是其中之一。
“GetTransitiveNonDotNetProjectDependencies”任务无法从程序集C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Tasks.dll中加载。程序集“Microsoft.DotNet.Tasks,Version=14.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”的类型“Microsoft.DotNet.Tasks.KProcess”中的方法“get_BuildEngine”没有实现。请确认声明正确,程序集及其所有依赖项可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类。完成在项目“WebApplication22.xproj”中构建目标“_GetDependencyFragmentFiles”-- 失败。
提示:如果我使用Visual Studio命令提示符并使用MSbuild,则正常工作。

也许这个链接有用 - https://learn.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild - Sanket
我用你的代码进行了测试,结果出现了相同的错误。我建议你可以通过编程方式调用MSBuild命令来构建项目。另外,你可以参考这个工具的代码:https://github.com/dotnet/buildtools - starian chen-MSFT
1个回答

3
现在还不行。当你从Visual Studio命令提示符中运行msbuild来构建一个asp.net core项目时,它会调用dotnet.exe来进行构建。
微软正在努力将.xproj/project.json迁移到.csproj/MSBuild,最有可能在Visual Studio 15 RTM中提供。您可以参考此链接获取更多信息:Changes to Project.json
这个变化的第一波将发生在Visual Studio“15”RTM中:当打开任何.NET Core项目时,它将自动从.xproj转换为.csproj,并将资产从project.json文件移动到配置文件和.csproj文件中。我们还将提供一个工具来转换使用.NET命令行工具的应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接