有没有办法解决从 WSDL 代码自动生成的系统命名空间冲突
本文关键字:自动生成 系统 命名空间 冲突 代码 WSDL 解决 有没有 | 更新日期: 2023-09-27 18:34:22
非常简单,但相当令人沮丧。我的项目中有一个(不幸的是,我无法更改它)一个库,该库在命名空间中声明MyCompany.System
类。将服务引用添加到我的其他库后,我在自动生成的代码中收到数百个错误System.*
因为 .NET 命名空间都解析为MyCompany.System.*
命名空间。
通过编辑自动生成的代码并向所有对System.*
引用添加global::
,可以轻松解决此问题。令人困惑的是,为什么一些自动生成的代码已经具有它,而一些/大多数没有。我在VS2012中找不到任何选项来强制WSDL自动附加global::
。
那么,如果有的话,我有什么选择呢?
一些想法,其中一个可能会奏效。 :)
在自动生成的代码将驻留的项目中,首先编辑 Visual Studio 项目设置,并将项目的默认命名空间更改为 MyCompany 以外的名称空间。 这可能会阻止系统被解释为 MyCompany.System。
尝试使用命名空间别名:
使用 MyCompanySystem = MyCompany.System;
你可以像这样使用 extern 别名:在 MyCompany.System dll 的属性中,将别名设置为 Msystem
extern alias MSystem
//using statements
using MSystem.MyCompany.System
MSDN 关于外部别名:https://msdn.microsoft.com/pl-pl/library/ms173212.aspx