有没有办法解决从 WSDL 代码自动生成的系统命名空间冲突

本文关键字:自动生成 系统 命名空间 冲突 代码 WSDL 解决 有没有 | 更新日期: 2023-09-27 18:34:22

非常简单,但相当令人沮丧。我的项目中有一个(不幸的是,我无法更改它)一个库,该库在命名空间中声明MyCompany.System类。将服务引用添加到我的其他库后,我在自动生成的代码中收到数百个错误System.*因为 .NET 命名空间都解析为MyCompany.System.*命名空间。

通过编辑自动生成的代码并向所有对System.*引用添加global::,可以轻松解决此问题。令人困惑的是,为什么一些自动生成的代码已经具有它,而一些/大多数没有。我在VS2012中找不到任何选项来强制WSDL自动附加global::

那么,如果有的话,我有什么选择呢?

有没有办法解决从 WSDL 代码自动生成的系统命名空间冲突

一些想法,其中一个可能会奏效。 :)

在自动生成的代码将驻留的项目中,首先编辑 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