Почему окружение моего класса пространством имен приводит к тому, что все остальные классы перестают компилироваться? - PullRequest
0 голосов
/ 27 января 2012

У меня есть большое веб-приложение в vb.net 4.0. Его пространство имен по умолчанию настраивается в свойствах проекта. Ни один из классов корневого уровня в нашем приложении не окружен объявлениями пространства имен.

Когда я добавляю файл .asmx в корневую папку веб-сайта, он прекрасно компилируется, но по какой-то причине не работает (уже спрашивали, почему в других темах). Поэтому, чтобы заставить его работать, я пытаюсь окружить класс, объявленный в .asmx, объявлением пространства имен. Как только я это сделаю, я перейду с нуля ошибок компилятора примерно на миллион. Мое приложение не может найти НИЧЕГО в корневом пространстве имен. Но я не изменил никаких других файлов, только этот файл .asmx.

ПОЧЕМУ так ведет себя? Как я могу предотвратить его поведение без рефакторинга всего приложения? Я хотел бы очистить пространство имен по умолчанию и явно добавить их в каждый класс корневого уровня, но я не уверен, что это сработает с нашим менеджером релизов, и я даже не знаю, решит ли это проблему ...

1 Ответ

0 голосов
/ 27 января 2012

Когда вы добавляете пространство имен в VB.net вокруг класса, вы должны обновить любые ссылки на пространство имен.

В качестве примера. Если вы добавите пространство имен Bar вокруг класса с именем candy, а пространство имен Root равно Foo (его можно найти в свойствах проекта -> Приложение -> Пространство имен Root), вам теперь нужно добавить Import Foo.Bar к любым классам, которые ссылались на него.

Итак, для вашего файла разметки asmx, если ваше корневое пространство имен равно Foo, а обертка пространства имен, которую вы добавили в свой веб-сервис, была Bar, вам нужно обновить отметку .asmx до:

<%@ WebService Language="vb" CodeBehind="HomepageService.asmx.vb" Class="Foo.Bar.HomepageService" %>
...