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

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

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

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

在这里插入图片描述

报错如下:

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

原因:

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

解决办法:安装Windows 8.1 SDK

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

打开Visual Studio Installer
在这里插入图片描述

选择"修改"

在这里插入图片描述
勾选"Windows 8.1 SDK和UCRT SDK",并执行修改。

在这里插入图片描述
安装完成后,重新启动。选中解决方案,右键选择"重定解决方案目标"

在这里插入图片描述
选择8.1版本sdk
在这里插入图片描述
再次编译此错误消失。

二、编译其中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。

在这里插入图片描述

原因:

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

在这里插入图片描述
经过对xsd文件的了解,发现利用xsd.exe可以将XSD文件生成C#类,但是似乎xsd.exe无法实现生成C++类,故报错中指出“xsd.exe”已退出。

我使用命令方式将XSD文件生成C++类,也是报与VS中一样的错误,如下:
在这里插入图片描述
反正这错误就是XSD转换生成失败。

解决办法:删除XSD文件

我发现该工程下有个.h与.xsd文件名一样,猜测diskspd.h就是diskspd.xsd生成的c++类。打开diskspd.h查看,发现并不是C++,而是C#,比较疑惑???。
在这里插入图片描述

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

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



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值