如何在.NET解决方案的测试项目中更新Service Reference?
解决同一解决方案中WCF服务引用无法更新的问题
这问题我碰到过好几次,同一解决方案里的WCF服务更新后,测试项目没法正常更新服务引用确实挺闹心的,给你几个亲测有效的解决办法:
先确认WCF服务正常运行
确保按下F5启动后,IIS Express托管的WCF服务没有报错。你可以打开浏览器,访问服务的元数据地址(比如http://localhost:xxxx/YourService.svc),如果能看到WCF的默认欢迎页面,说明服务已经正常启动,元数据也能正常访问。手动添加/重新添加服务引用
如果VS没自动显示更新选项,别等了,手动操作更靠谱:- 在测试项目上右键,选择「添加 > 服务引用」
- 在弹出的窗口里,点击左下角的「发现」按钮,选择「解决方案中的服务」,VS会自动扫描当前解决方案里的WCF服务
- 选中你的WCF服务,确认好命名空间后点击「确定」,就能获取到最新的
OperationContract了 - 如果之前已经添加过服务引用,也可以直接删掉旧引用,再按上面的步骤重新添加,比找「更新服务引用」选项更省心
改用项目引用替代服务引用
既然两个项目在同一解决方案里,其实可以跳过服务引用,直接给测试项目添加对WCF项目的项目引用:- 在测试项目的「引用」上右键,选择「添加项目引用」
- 在弹出的窗口里勾选你的WCF项目,点击确定
这样测试项目就能直接使用WCF项目里的契约接口,不用依赖自动生成的代理类,后续更新OperationContract后,只要重新编译WCF项目,测试项目就能自动获取到最新的接口,彻底避免服务引用更新的问题
清理重建解决方案
有时候VS的缓存会导致识别异常,试试先清理整个解决方案(点击顶部菜单「生成 > 清理解决方案」),然后重新生成所有项目(「生成 > 重新生成解决方案」),之后再去操作服务引用,说不定就能看到更新选项了
附上你提供的截图:
内容的提问来源于stack exchange,提问作者Gautam
相关产品推荐
相关产品推荐

