2016-08-13 63 views
2

我想用另一个C#项目构建asp.net核心项目。这里是示例代码。 (我正在使用Visual Studio 2015)是否有可能使用MSBuild从代码构建asp.net核心项目?

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文件 (86)\的MSBuild \微软\ VisualStudio的\ v14.0 \ DOTNET的\ Microsoft.DotNet.Tasks.dll。 从程序集'Microsoft.DotNet.Tasks,Version = 14.0.0.0, '类型'Microsoft.DotNet.Tasks.KProcess' 中的方法'get_BuildEngine'Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'没有 实现。确认声明是正确的, 程序集及其所有依赖项都可用,并且 任务包含一个实现了 Microsoft.Build.Framework.ITask的公共类。完成构建目标 项目“WebApplication22.xproj”中的“_GetDependencyFragmentFiles” - 失败。

注意:如果我使用Visual Studio命令提示符并使用MSbuild,那么它工作正常。

+0

可能这个链接有用 - https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild – Sanket

+0

我做了一个测试你的代码,它重现相同的错误。我建议你可以以编程方式调用MSBuild命令来构建项目。另一方面,你可以参考这个工具代码:https://github.com/dotnet/buildtools –

回答

2

暂时没有。当您从Visual Studio命令提示符运行msbuild来构建一个asp.net核心项目时,它将调用dotnet.exe来构建。

MS正在从.xproj/project.json移动到.csproj/MSBuild当前,并且最有可能在Visual Studio 15 RTM中可用。你可以参考这个链接获取更多信息:Changes to Project.json

这种变化的第一波将在Visual Studio“15” RTM发生:在Visual Studio中打开任何.NET的核心项目时,它会自动 从转换到.xproj .csproj的,移动资产从 project.json文件转换成配置文件和.csproj文件。 我们还将提供一个使用.NET 命令行工具转换应用程序的工具。

相关问题