SvcUtil版本问题的解决

这个黄金周闷在家中,开始了对Windows Communication Foundation的学习之旅,在Google上搜索了一下相关的安装资料,在微软的网站上下载了相关工具后在全新的Windows2003环境下进行了安装。

首先安装了WinFX Runtime Component 3.0 Beta2,然后安装Microsoft Windows SDK for the February 2006 CTP,整个安装过程相当顺利,其他相关工具安装完毕后,按照http://windowscommunication.net/ 上的例子开始尝试Hello WCF,Service端的代码写完,执行测试成功。然后按照文章介绍写客户端的访问代码,这时问题来了。

按文章介绍,先要使用svcutil命令生成客户端访问的Proxy类,但在Command窗口实际执行svcutil命令时却直接报错,提示svcutil引用的版本错误。使用Reflector查看svcutil,发现它引用的System.ServiceModel版本是3.0.0.0,而我机器的GAC上的System.ServiceModel版本则是2.0.0.0的,导致svcutil执行时的错误。

尝试先用ildasm命令将svcutil.exe反汇编成il文件,将System.ServiceModal的引用版本改成2.0.0.0,去掉svcutil的public key信息,再重新编译svcutil。这回直接执行svcutil成功,能正常显示帮助信息,但使用命令生成Proxy文件(如键入svcutil http://localhost/helloservice?wsdl)时仍然会出错,看来System.ServiceModal的2.0.0.0和3.0.0.0的版本之间的确有差别,不能张冠李戴。

在Google上没找到相关的解决方法,无奈之下祭起重装大法,先卸载了WinFX Runtime Component,然后重新安装,GAC上的System.ServiceModel居然神奇的变成了3.0.0.0版本,svcutil工具也终于能正常使用了。看来WinFX Runtime Component在安装时会收集相应的SDK安装的版本信息,以决定下载System.ServiceModel的版本,之前由于未安装Windows SDK,所以安装的是2.0.0.0版本,而在安装过Windows SDK后,安装程序则会下载对应的3.0.0.0版本。各位在安装学习时的确需要注意了。

正在导入 Web 服务元数据... 正在搭建服务引用代码... 错误MSBuild version 17.6.1+8ffc3fe3d for .NET C:\Program Files\dotnet\sdk\7.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.EolTargetFrameworks.targets(28,5): warning NETSDK1138: 目标框架“netcoreapp2.0”不受支持,将来不会收到安全更新。有关支持策略的详细信息,请参阅 https://aka.ms/dotnet-core-support。 [C:\Users\ammic\AppData\Local\Temp\WCFConnectedService\2023_Jun_05_15_26_21\svcutil_bootstrap\SvcutilBootstrapper\SvcutilBootstrapper.csproj] CSC : error CS8630: 无效的 nullable 值: C# 7.3 的“Enable”。请使用语言版本 8.0 或更高版本。 [C:\Users\ammic\AppData\Local\Temp\WCFConnectedService\2023_Jun_05_15_26_21\svcutil_bootstrap\SvcutilBootstrapper\SvcutilBootstrapper.csproj] 生成失败。 C:\Program Files\dotnet\sdk\7.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.EolTargetFrameworks.targets(28,5): warning NETSDK1138: 目标框架“netcoreapp2.0”不受支持,将来不会收到安全更新。有关支持策略的详细信息,请参阅 https://aka.ms/dotnet-core-support。 [C:\Users\ammic\AppData\Local\Temp\WCFConnectedService\2023_Jun_05_15_26_21\svcutil_bootstrap\SvcutilBootstrapper\SvcutilBootstrapper.csproj] CSC : error CS8630: 无效的 nullable 值: C# 7.3 的“Enable”。请使用语言版本 8.0 或更高版本。 [C:\Users\ammic\AppData\Local\Temp\WCFConnectedService\2023_Jun_05_15_26_21\svcutil_bootstrap\SvcutilBootstrapper\SvcutilBootstrapper.csproj] 1 个警告 1 个错误 已用间 00:00:06.97 启动 svcutil 出现错误。这通常在处理引用发生。通过不提供引用参数并手动删除在生成的代理代码中重新定义的任何类型,或许能够解决问题。 完成。 错误服务引用添加失败。索引(从零开始)必须大于或等于零,且小于参数列表的大小。
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值