2016-08-13 61 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 命令行工具轉換應用程序的工具。

相關問題