Ошибка BC30002 - тип XXX не определен - PullRequest
7 голосов
/ 17 сентября 2008

ОК, это начинает сводить меня с ума. У меня есть веб-приложение asp.net. Довольно просто, большая часть кода в .aspx.vb и несколько классов в App_Code.

Проблема, которая начала возникать только сегодня (хотя большая часть кода уже была написана), заключается в том, что время от времени у меня появляется это сообщение об ошибке:

Ошибка BC30002: тип ‘XXX’ не определен

Ошибка возникает каждый раз, когда я изменяю файлы в папке App_Code. РЕДАКТИРОВАТЬ: ОК, это также происходит, если я некоторое время ничего не трогаю, а затем обновлять страницу. Я все еще пытаюсь выяснить, как именно вызвать эту ошибку.

Мне просто нужно немного подождать, не трогая ничего, затем обновить страницу, и она работает, но это очень раздражает.

Так что я немного искал, но ничего не пришло, кроме импорта не хватает. Есть идеи?

Ответы [ 5 ]

5 голосов
/ 17 сентября 2008

Звучит как проблема перед компиляцией, особенно потому, что вы упоминаете, что получаете ошибку, а затем ждете, и она исчезает. Возможно, ASP.NET все еще находится в процессе динамической компиляции приложения или скомпилировал типы в разные сборки.

При динамической компиляции вы не гарантируете, что разные файлы кода будут скомпилированы в одну сборку. Таким образом, тип, на который вы ссылаетесь, может не быть разрешен в пределах его предварительно скомпилированной сборки.

Попробуйте использовать директиву @Reference, чтобы указать среде выполнения, что ваша страница и файл, содержащий ваш тип, должны быть скомпилированы в одну сборку.

@ Ссылка - MSDN

4 голосов
/ 07 февраля 2018

Это случилось со мной после того, как я добавил новый проект в старое решение. Я опустил целевую платформу, чтобы она соответствовала другим «старым» проектам, и ошибка исчезла.

4 голосов
/ 01 октября 2008

Я думаю, что нашел проблему.

Мой код был такой:

Imports CMS

Sub Whatever()
    Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS
    Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util
End Sub

Я не уверен, почему я написал это так, но получается, что тот факт, что я вызывал классы без вызова всего их пространства имен или импорта всего их пространства имен, вызывал ошибку.

Я переписал это так:

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

А теперь это работает ...

0 голосов
/ 14 февраля 2019

Замените ваши файлы vbproj и vbproj.user из резервной копии ранее, если ссылки равны

0 голосов
/ 17 сентября 2008

Звучит так, как будто это происходит каждый раз, когда сайт раскручивается (приложение перезапускается каждый раз, когда вы нажимаете app_code, и, вероятно, у вас есть IIS, настроенный на отключение сайта после X минут бездействия).

Могу поспорить, что это как-то связано с тем, что рабочий процесс asp.net не имеет правильных прав доступа на сервере. Поэтому он пытается загрузить сборку и ему отказывают.

Проверьте эту ссылку и таблицу 19.3 для получения списка всех папок, к которым должна иметь доступ учетная запись рабочего процесса, чтобы функционировать. И не забудьте дать ему права на все файлы и папки в вашем виртуальном каталоге!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...