2017-11-09 9 views
0

MSBuild APIを使用してC++プロジェクトを構築するC#アプリケーションを開発しています。私がテストしているC++プロジェクトは完全に空のプロジェクトです。コマンドラインでMSBuild.exeを使ってコンパイルしようとするとうまくいきます。私は次のエラーを取得エラーMSBuild APIを使用してMSBuild.exeが正常に動作しているときのMSB4019

Dictionary<string, string> globalProperty = new Dictionary<string, string> { { "Configuration", "Debug" }, { "Platform", "x86" } }; 
BuildParameters buildParameters = new BuildParameters(new ProjectCollection()) { Loggers = new List<ILogger> { new ConsoleLogger(LoggerVerbosity.Detailed) } }; 
BuildRequestData buildRequest = new BuildRequestData(@"C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj", globalProperty, "4.0", new[] { "Build" }, null); 
BuildResult buildResult = BuildManager.DefaultBuildManager.Build(buildParameters, buildRequest); 

:さらに

Building with tools version "15.0". 
C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj(27,3): error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 

Done building project "Project1.vcxproj" -- FAILED. 

を、私はMSBuildの中でこれをしようとすると、私はしかし、私は代わりになどのMSBuildのAPIを使用する場合

MSBuild.exe C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj /p:Platform=x86 

使用しますWindows \ Framework64 \ v4.0 * I doは、Program Files(x86)\ Microsoft Visual Studio 2017 \ Community \ MにあるMSBuildを使用するのと同じエラーを表示します。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="Microsoft.Build.Framework" culture="neutral"/> 
     <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.0.0.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

私は何を次のようになります。私は彼が私はapp.configに従うが、すべての違いを確認していないようです追加している私は15.0を使用していることを確認する15.0 \ビン\ amd64に

\ SBuildここで間違っている/誤解をしていますか?

アップデート:バージョン4.xのMicrosoft.Build.xへの参照がありました。参照を削除してv15.xに置き換えました。今すぐビルドエラー0と0警告で失敗します。出力を参照してください:

Build started 09/11/2017 16:36:04. 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Trying to import C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\$(MSBuildToolsVersion)\Microsoft.Common.props using extensions path C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild 
Property reassignment: $(MSBuildProjectExtensionsPath)="C:\Users\MyName\source\repos\Project1\Project1\obj\" (previous value: "obj\") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Microsoft.Common.props (58,5) 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Trying to import C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\$(MSBuildToolsVersion)\Imports\Microsoft.Common.props\ImportBefore\* using extensions path C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Property reassignment: $(Platform)="Win32" (previous value: "x86") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Default.props (30,5) 
Property reassignment: $(PlatformToolset)="v100" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\Platform.default.props (26,5) 
Property reassignment: $(PlatformToolset)="v141" (previous value: "v100") at C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj (31,5) 
Property reassignment: $(_PlatformFolder)="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\" (previous value: "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\\Platforms\Win32\") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\Platform.props (15,5) 
Property reassignment: $(WindowsSdkDir_10)="C:\Program Files (x86)\Windows Kits\10\" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.props (18,5) 
Property reassignment: $(TargetExt)=".exe" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (29,5) 
Property reassignment: $(WindowsSdkDir_81)="C:\Program Files (x86)\Windows Kits\8.1\" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (55,5) 
Property reassignment: $(NETFXKitsDir)="C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (163,5) 
Property reassignment: $(NETFXSDKDir)="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\" (previous value: "") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (165,5) 
Property reassignment: $(WindowsSDK_ExecutablePath_x86)="C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86;;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools" (previous value: "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86;") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (169,5) 
Property reassignment: $(WindowsSDK_ExecutablePath_x64)="C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64;;C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64" (previous value: "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64;") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props (170,5) 
Property reassignment: $(_PropertySheetDisplayName)="Multi-byte Character Support" (previous value: "Core Windows Libraries") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.MultiByteCharSupport.props (15,5) 
Property reassignment: $(_PropertySheetDisplayName)="Application" (previous value: "Multi-byte Character Support") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Application.props (15,5) 
Property reassignment: $(ExtensionsToDeleteOnClean)="*.cdf;*.cache;*.obj;*.obj.enc;*.ilk;*.ipdb;*.iobj;*.resources;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;*.tlog;*.manifest;*.res;*.pch;*.exp;*.idb;*.rep;*.xdc;*.pdb;*_manifest.rc;*.bsc;*.sbr;*.xml;*.metagen;*.bi;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.exe.manifest;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.tlb;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.pdb;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.exe;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.bsc;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.ilk;C:\Users\MyName\source\repos\Project1\Project1\Debug\Project1.exe.intermediate.manifest" (previous value: "*.cdf;*.cache;*.obj;*.obj.enc;*.ilk;*.ipdb;*.iobj;*.resources;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;*.tlog;*.manifest;*.res;*.pch;*.exp;*.idb;*.rep;*.xdc;*.pdb;*_manifest.rc;*.bsc;*.sbr;*.xml;*.metagen;*.bi") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets (35,5) 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Trying to import C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\$(MSBuildToolsVersion)\Microsoft.Common.targets\ImportBefore\* using extensions path C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
Property reassignment: $(MSBuildAllProjects)=";C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.targets;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.NETFramework.CurrentVersion.props" (previous value: ";C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.targets") at C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.NETFramework.CurrentVersion.props (29,5) 
Search paths being used for $(MSBuildExtensionsPath) are C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild;$(MSBuildProgramFiles32)\MSBuild 
__________________________________________________ 
Project "C:\Users\MyName\source\repos\Project1\Project1\Project1.vcxproj" 
(Build target(s)): 

Building with tools version "15.0". 

Done building project "Project1.vcxproj" -- FAILED. 
The thread 0x219c has exited with code 0 (0x0). 

Build FAILED. 
    0 Warning(s) 
    0 Error(s) 
+0

私は 'BuildManager'と同じ結果を得ました。インターネットを検索した後、Microsoft.Build v15.xにバグがあります。https://github.com/Microsoft/msbuild/issues/2369これにより、この問題が発生する可能性があります。 –

+0

あなたが正しいようです。私は既に私の設定で1つのassemblyBindingを持っていた、それは他の参照のために同じを行うことが必要だったようだ。私はすぐにアスワルトを追加し、あなたのコメントを参照します。リンクをありがとう、まだ1つを渡って来ていない! – NullError

答えて

0

レオ-MSFTは私の質問にコメントで指摘したように、Microsoft.Buildバージョン15.xのバグは(https://github.com/Microsoft/msbuild/issues/2369を参照)があります。この修正は、Visual Studio 2017バージョンのために働く

<runtime> 
<!-- TODO: We can probably remove this once MSBuild issue 2369 is fixed: https://github.com/Microsoft/msbuild/issues/2369#issuecomment-323139518--> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="Microsoft.Build.Utilities.Core" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" /> 
    <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="Microsoft.Build.Framework" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" /> 
    <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" /> 
    </dependentAssembly> 
</assemblyBinding> 

: - 一時的な回避策というか、 - 溶液(:https://github.com/IntelliTect/Coalesce/commit/4d9024ba441af39c8e77e5d30174e67317ed91e0から)ポストにリンクされて設定ファイルに以下を追加することです15.3。

関連する問題