2016-08-13 10 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(); 

これは私に多くのエラーを与えます。以下はその1つです。

"GetTransitiveNonDotNetProjectDependencies" タスクは、アセンブリCから をロードできませんでした。過去ログ\ Microsoft.DotNet.Tasks.dll \ \プログラムファイル (x86の)\ MSBuildの\マイクロソフト\ VisualStudioを\ v14.0。タイプ メソッド 'get_BuildEngine' 'Microsoft.DotNet.Tasks.KProcess' アセンブリから 'Microsoft.DotNet.Tasks、バージョン= 14.0.0.0、 ニュートラル文化=、なPublicKeyToken = b03f5f7f11d50a3aは' 実装を持っていません。宣言が正しいことを確認し、 アセンブリとすべての依存関係が利用可能であり、 タスクに Microsoft.Build.Framework.ITaskを実装するパブリッククラスが含まれていることを確認します。完了したビルドターゲット "WebApplication22。xproj"プロジェクトの "_GetDependencyFragmentFiles" - FAILED。

注: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のコマンドプロンプトからasp.netコアプロジェクトをビルドするためにmsbuildを実行すると、ビルドするために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の コマンドラインツールを使用してアプリケーションを変換するためのツールも提供します。

関連する問題