diskspd的github地址:https://github.com/microsoft/diskspd

在使用VS2017编译diskspd时,报了一些错误。

一、编译其中任意工程报错

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题

报错如下:

  • error MSB8036: 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。

原因:

原来工程可能是调用的其他版本sdk,但是目前系统上没有该版本。

解决办法:安装Windows 8.1 SDK

安装Windows SDK 版本8.1,步骤如下:

打开Visual Studio Installer
解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题

选择"修改"

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
勾选"Windows 8.1 SDK和UCRT SDK",并执行修改。

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
安装完成后,重新启动。选中解决方案,右键选择"重定解决方案目标"

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
选择8.1版本sdk
解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
再次编译此错误消失。

二、编译其中XmlProfileParser工程报错

报错如下:

  • 错误: 未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”。
  • D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(1954,5): error MSB6006: “xsd.exe”已退出,代码为 1。

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题

原因:

通过对比发现是编译xsd文件报错,其他文件不报错。

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
经过对xsd文件的了解,发现利用xsd.exe可以将XSD文件生成C#类,但是似乎xsd.exe无法实现生成C++类,故报错中指出“xsd.exe”已退出。

我使用命令方式将XSD文件生成C++类,也是报与VS中一样的错误,如下:
解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题
反正这错误就是XSD转换生成失败。

解决办法:删除XSD文件

我发现该工程下有个.h与.xsd文件名一样,猜测diskspd.h就是diskspd.xsd生成的c++类。打开diskspd.h查看,发现并不是C++,而是C#,比较疑惑???。
解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题

假设头文件diskspd.h,真是xsd生成的,那反正现在已经有了,不需要再编译时再生成一次。

那就删除diskspd.xsd试试,再编译,居然完美通过。


===================================================

===================================================

业余时间不定期更新一些想法、思考文章,欢迎关注,共同探讨,沉淀技术!

解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题            解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题解决“未能找到 CodeDom 提供程序类型“Microsoft.VisualC.CppCodeProvider, CppCodeProvider”问题

相关文章:

  • 2022-12-23
  • 2022-01-31
  • 2021-08-16
  • 2022-12-23
  • 2022-01-05
  • 2022-02-17
猜你喜欢
  • 2021-12-25
  • 2022-03-10
  • 2022-01-03
  • 2022-12-23
  • 2022-01-21
  • 2021-10-16
  • 2021-10-31
相关资源
相似解决方案