繁体   English   中英

在MSBuild.exe正常工作时使用MSBuild API时出现错误MSB4019

[英]Error MSB4019 when using the MSBuild API while MSBuild.exe works fine

我正在开发一个C#应用程序,它将使用MSBuild API来构建C ++项目。 我正在测试的C ++项目是一个完全空的项目。 当我尝试通过命令行使用MSBuild.exe对其进行编译时,它可以正常工作。 我用

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

但是当我改用MSBuild API时:

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.

此外,当我使用Windows \\ Framework64 \\ v4.0 *中的MSBuild尝试此操作时,与使用位于程序文件(x86)\\ Microsoft Visual Studio 2017 \\ Community \\ MSBuild \\ 15.0中的MSBuild时,我确实得到了相同的错误\\ Bin \\ amd64

为了确保我使用的是15.0,我在他的app.config中添加了他,但似乎没有什么不同:

<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>

我在这里可能做错什么/误解了?

更新:我发现我引用了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)

正如Leo-MSFT在对我的问题的评论中指出的那样,Microsoft.Build版本15.x中存在一个错误(请参阅https://github.com/Microsoft/msbuild/issues/2369 )。 解决方案-或更确切地说是临时解决方法-是将以下内容添加到帖子中链接的配置文件中(来自: https : //github.com/IntelliTect/Coalesce/commit/4d9024ba441af39c8e77e5d30174e67317ed91e0 ):

<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>

此修补程序适用于Visual Studio 2017 15.3版。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM