有没有一种方法可以解决从WSDL代码自动生成的代码中System命名空间的冲突?

3
非常简单但相当令人沮丧。我的项目中有一个库(不幸的是我无法更改),它在MyCompany.System命名空间中声明其类。在向我的其他库添加服务引用后,由于将.NET命名空间System.*解析为MyCompany.System.*命名空间,所以我在自动生成的代码中遇到了数百个错误。
问题很容易通过编辑自动生成的代码并在所有对System.*的引用中添加global::来修复。然而,令人困惑的是,为什么有些自动生成的代码已经有这个标记,而一些或大多数则没有。我无法在VS2012中找到任何选项来强制WSDL自动附加global::
那么,如果有任何选项,我的选择是什么?

当您在VS2012中添加Web服务引用时,某些时候会要求提供要生成的代码的命名空间。请提供一个不与现有命名空间冲突的命名空间。 - Bogdan
它确实会提问,但是 Visual Studio 会将默认命名空间用作后缀。换句话说,提供 MyService 会得到 MyCompany.MyService。虽然这是期望的,但代码生成在项目的命名空间内看起来更整洁。 - Schultz9999
2个回答

0

0
一些想法,其中一个可能有效。 :)
在自动生成的代码所在的项目中,首先编辑Visual Studio项目设置,并将项目的默认命名空间更改为不同于MyCompany的其他内容。这可能会阻止System被解释为MyCompany.System。
尝试使用命名空间别名: using MyCompanySystem = MyCompany.System;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接