Я столкнулся с этой странной проблемой пространства имен при добавлении моего первого «Справочника услуг» в клиентский проект в Visual Studio 2010.
Если пространство имен по умолчанию для моего проекта использует две или более частей, например, MyCompany.MyApp
затем при добавлении ссылки на службу создается файл Reference.cs, содержащий пространство имен MyCompany.MyApp.ServiceReferenceName
с большим количеством кода автоматического создания с полностью определенными именами, например, System.SerializableAttribute
, System.Runtime.Serialization.DataContractAttribute
.
Файл Reference.cs будет полон ошибок компиляции, поскольку компилятор начинает обрабатывать пространство имен System как подчиненный элемент пространства имен MyCompany.MyApp
. Вы получаете очень много ошибок по типу:
The type or namespace name 'Runtime' does not exist in the namespace 'MyCompany.MyApp.System'...
Если я изменю пространство имен в верхней части файла Reference.cs на что-то простое, например, MyCompanyMyApp.ServiceRefernceName
затем компилятор ведет себя и распознает ссылки на пространство имен System как декларацию пространства имен System.
Сейчас я использую другой обходной путь, поскольку я действительно хочу сохранить свои пространства имен из нескольких частей. Моя текущая альтернатива - добавить global::
перед ссылками пространства имен System, чтобы заставить компилятор сделать правильную вещь. Фактически, если мастер «Добавить ссылку на службу» использует шаблоны T4, я могу просто изменить их, чтобы встроить мой обходной путь в источник.
Вопросы * * 1023
Мне бы очень хотелось понять, что здесь происходит и почему проблема состоит из пространства имен, состоящего из нескольких частей. Предположительно есть больше пространства имен, чем я думал. Во-вторых, очень хотелось бы найти лучшее решение, чем выполнение глобального поиска / замены каждый раз, когда я добавляю ссылку на сервис или слоняюсь с некоторыми шаблонами T4.