Страницы asp.net могут использовать библиотеку классов, но сайт не будет компилироваться
Я использую VS2012 Update 3 и у меня есть решение, содержащее три проекта Visual Basic, библиотеку классов, приложение Conosole и веб-сайт IIS.
На сайте есть ссылка на проект библиотеки. Библиотека прекрасно компилируется и автоматически помещает последнюю DLL в папку bin сайта.
Это все работало без проблем до этой недели.
Мои веб-страницы могут импортировать и использовать библиотеку классов. Я получаю правильный intellisense, и страницы просматривают или, в конце концов, просматривают, показывая, что они используют библиотеку. На этой неделе иногда я получаю ошибку типа не определено при просмотре, но после ожидания она работает. Но компиляция всегда терпит неудачу.
При компиляции иногда ошибки отображаются в списке ошибок, а затем в конечном итоге исчезают, но во ВСЕХ случаях при построении ошибки отображаются на вкладке вывода в виде: SomeCodeBehindFile.aspx.vb(#,#) error BC30002: Тип "SomeTypeInMyLibrary" не определен.
Ошибка BC30002 - тип XXX не определен, не помогло. Я попытался использовать полностью определенные типы переменных по сравнению с использованием импорта. Я попытался изменить удостоверение в пуле приложений на Сетевую службу, которая имеет разрешение на чтение на всем сайте.
Я также пробовал сборку Visual Studio> Clean Solution и удаление всех файлов из временных рамок Windows. ASP.NET Files.
Единственное, что я мог сделать, чтобы раздражать VS, - это переименовать один из моих файлов asp и его атрибуты имен классов / директив страницы вручную, но я делал это раньше без проблем. Я стал параноиком, удалил этот файл и снова добавил его. У меня также есть 3 страницы с жалобами на типы, которые не определены сейчас.
1 ответ
Был действительно озадачен на некоторое время. Это также ухудшилось со страницами, использующими библиотеку, постоянно отказывающуюся от просмотра. Хотя, если бы я скопировал библиотеку и страницы с ошибками в другое веб-приложение, это сработало бы! Не зная, что сошло с рельсов, я запустил новый веб-сайт VB и некоторое время вернулся к работе, но потом все началось снова. Я не связывал то, что я сделал, что на самом деле вызвало горе на моем втором сайте. В третий раз я запустил новый веб-сайт на этот раз с использованием C#. Снова отлично до тех пор, пока я не начал снимать себя. К счастью, компилятор C# выдал более полезное сообщение об ошибке: "Директива using namespace может применяться только к пространствам имен;" StaffPlusLibrary "- это тип, а не пространство имен". Проблема была в том, что я продолжал добавлять страницу справки на сайт, связанный с библиотекой классов, и назвал страницу StaffPlusLibrary.aspx. Я стараюсь не называть страницы такими же, как существующие классы, но я не думаю, что я собирался создать страницу с тем же именем, что и корневое пространство имен моей библиотеки. Таким образом, страница создала класс, используя то же имя, что и пространство имен. Двусмысленность, которую я представил, не была очевидна до C#.