Я разработал приложение с использованием Entity Framework , SQL Server 2000, Visual Studio 2008 и Enterprise Library.
Локально работает абсолютно нормально, но когда я развертываю проект в нашей тестовой среде, я получаю следующую ошибку:
Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации
Трассировка стека: в System.Reflection.Module._GetTypesInternal (StackCrawlMark & stackMark)
в System.Reflection.Assembly.GetTypes ()
в System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (контекст LoadingContext)
в System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (контекст LoadingContext)
в System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (сборка сборки, логическое loadReferencedAssemblies, словарь
2 knownAssemblies, Dictionary
2 & typesInLoading, List`1 & ошибки)в System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection, сборка сборки, логическая загрузка loadReferencedAssemblies)
в System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType (Type type)
в System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType (Тип типа, Сборка, вызывающая сборку)
в System.Data.Objects.ObjectContext.CreateQuery [T] (String queryString, ObjectParameter [] параметры)
У Entity Framework, похоже, есть проблема, есть какие-то подсказки, как это исправить?
источник
Ответы:
Я решил эту проблему, установив для атрибута «Копировать локально» ссылок моего проекта значение true.
источник
Эта ошибка не имеет истинного волшебного ответа. Ключ должен иметь всю информацию, чтобы понять проблему. Скорее всего, в динамически загруженной сборке отсутствует ссылка на сборку. Эта сборка должна находиться в каталоге bin вашего приложения.
Используйте этот код, чтобы определить, чего не хватает.
источник
throw new Exception(errorMessage);
, надеюсь, кому-то поможет.Одно из решений, которое мне помогло, - удалить папки bin / и obj / и перестроить решение.
источник
Два возможных решения:
источник
Как было упомянуто ранее, это обычно тот случай, когда сборки там нет.
Чтобы точно знать, какая сборка вам не хватает, присоедините ваш отладчик, установите точку останова, и когда вы увидите объект исключения, перейдите к свойству LoaderExceptions. Недостающая сборка должна быть там.
Надеюсь, поможет!
источник
Решением было проверить исключение LoaderException: в моем случае некоторые файлы DLL отсутствовали.
источник
Убедитесь, что вы разрешаете 32-разрядные приложения в IIS, если вы развернули IIS. Вы можете определить это в настройках вашего текущего пула приложений.
источник
Я столкнулся с этой ошибкой в приложении ASP.NET 4 + SQL Server 2008 R2 + Entity Framework 4.
Это будет нормально работать на моей машине для разработки (Windows Vista 64-bit). Затем при развертывании на сервере ( Windows Server 2008 R2 SP1) он будет работать до истечения времени ожидания сеанса. Таким образом, мы развернули приложение, и все выглядело нормально, а затем оставили его более чем на 20-минутный тайм-аут сеанса, после чего эта ошибка была бы выдана.
Чтобы решить эту проблему, я использовал этот код в блоге Кена Кокса для получения свойства LoaderExceptions.
Для моей ситуации отсутствующая DLL была
Microsoft.ReportViewer.ProcessingObjectModel
(версия 10). Эта DLL должна быть установлена в GAC компьютера, на котором выполняется приложение. Вы можете найти его в распространяемом пакете Microsoft Report Viewer 2010, доступном на сайте загрузки Microsoft.источник
Сначала я попробовал программу просмотра журнала Fusion, но это не помогло, поэтому я в итоге использовал WinDbg с расширением SOS.
! dumpheap -stat -type Исключение / D
Затем я изучил FileNotFoundExceptions. Сообщение в исключении содержало имя DLL, которая не загружалась.
Обратите внимание, что / D дает вам результаты с гиперссылками, поэтому нажмите на ссылку в сводке для FileNotFoundException. Это выведет список исключений. Затем нажмите на ссылку для одного из исключений. Это будет! Dumpobject, что исключения. Тогда вы сможете просто щелкнуть ссылку «Сообщение» в объекте исключения, и вы увидите текст.
источник
Если вы используете EntityDataSource в своем проекте, решение имеет исправление: «Не удалось загрузить один или несколько запрошенных типов» Ошибки . Вы должны установить ContextTypeName = "ProjectNameNameSpace.EntityContainerName" '
Это решило мои проблемы ...
источник
Мой экземпляр этой проблемы оказался недостающей ссылкой. Сборка упоминалась в app.config, но не имела ссылки в проекте.
источник
Если вы используете Entity Framework , попробуйте скопировать следующие ссылки локально.
Измените свойство «Копировать локально» на «Истина» для этих ссылок и опубликуйте.
источник
Другое решение, чтобы узнать, почему точно ничего не работает (от Microsoft Connect):
Добавьте этот код в проект:
Отключить сборку сериализации поколения.
источник
У меня было .NET 4.0, ASP.NET MVC 2.0, веб-приложение Entity Framework 4.0, разработанное в Visual Studio 2010. У меня была та же проблема, что она работала на одном сервере Windows Server 2008 R2, но не на другом сервере Windows Server 2008 R2, хотя версии .NET и ASP.NET MVC были одинаковыми, выдает ту же ошибку, что и ваша.
Я пошел по совету Мико , поэтому я установил Windows SDK v7.1 (x64) на отказавший сервер, чтобы я мог запустить! Dumpheap.
Что ж, получается, что установка Windows SDK v7.1 (x64) решила проблему. Независимо от того, что зависимость отсутствовала, она должна быть включена в SDK. Его можно загрузить из Microsoft Windows SDK для Windows 7 и .NET Framework 4 .
источник
Добавление моей конкретной проблемы / решения к этому, поскольку это первый результат для этого сообщения об ошибке. В моем случае ошибка была получена, когда я развернул второе приложение в папке моего первого приложения в IIS . Оба определяли строку подключения с одинаковым именем, что приводило к конфликту дочернего приложения и в свою очередь создавало это (для меня) неочевидное сообщение об ошибке. Это было решено добавлением:
в блоке строки подключения дочернего веб-приложения, которое не позволяет ему наследовать строки подключения файлов web.config выше в иерархии, поэтому это выглядит так:
Справочный вопрос переполнения стека, который помог мне, как только я определил, что происходит, будет наследовать ли дочернее приложение от родительского web.config? ,
источник
Это сработало для меня. Добавьте его в свой web.config
источник
It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
Моя проблема была решена после того, как я удалил избыточные файлы сборки из
bin
папки.источник
В случае, если ни один из других ответов не поможет вам:
Когда у меня возникла эта проблема, оказалось, что моя служба Windows была создана для платформы x64, и я случайно запустил 32-разрядную версию InstallUtil.exe. Поэтому убедитесь, что вы используете правильную версию InstallUtil для платформы, для которой вы создали.
источник
Другие предложения все хорошо. В моем случае проблема заключалась в том, что ящик разработчика представлял собой 64-разрядную машину, использующую расположение x86 различных API, включая Silverlight .
Изменяя целевую платформу в соответствии с 32-разрядным сервером, на котором развертывалось веб-приложение, удалось устранить большинство ошибок, связанных с невозможностью загрузки одного или нескольких запрошенных типов.
источник
Я изменил Свойство Конкретной Версии Ссылок на false, и это помогло.
источник
У меня было то же сообщение об ошибке при компиляции пакета Visual Studio (VSPackage). Все решение компилируется, и возникает ошибка при создании пакета CreatePkgDef. Сказав это, ясно, что я не могу поймать исключения LoaderException, поскольку это не мое приложение, которое выдает его, а собственный инструмент Microsoft. (Хотя я несу ответственность за путаницу CreatePkgDef.)
В моем случае основной причиной было то, что мое решение создает MyDll.dll, который уже был зарегистрирован в GAC (и они разные), поэтому CreatePgkDef запутался, какой использовать, и решил просто выдать ошибку, которая не ' очень полезно. MyDll.dll в GAC был зарегистрирован установщиком того же продукта (очевидно, более ранней версии, с / немного / другим содержанием).
Как это исправить
Изменение AssemblyVersion было достаточно хорошим для меня. :)
Я надеюсь, что это было полезно.
источник
У меня была та же проблема (но на моем локальном компьютере), когда я пытался добавить миграцию Entity Framework с помощью консоли диспетчера пакетов.
Я решил это путем создания консольного приложения, в котором Main () имел следующий код:
Убедитесь, что класс Configuration является конфигурацией миграции вашего неудачного проекта. Вам понадобится System.Data.Entity.Migrations, чтобы использовать DbMigrator.
Установите точку останова в вашем приложении и запустите ее. Исключение должно быть перехвачено Visual Studio (если только у вас не установлен этот тип исключения, чтобы не прерывать сеанс отладки), и вы сможете найти искомую информацию.
В моем случае отсутствующей ссылкой был EFProviderWrapperToolkit.
источник
Я получил эту проблему, когда я установил пакет NuGet на один из проектов и забыл обновить другой проект.
Я решил это, просто сделав оба проекта с одной и той же эталонной сборкой.
источник
Это случилось и со мной. Я решил проблему следующим образом: щелкните правой кнопкой мыши Решение, выберите Управление пакетами NuGet для решения ... Консолидируйте пакеты и обновите пакеты до той же версии.
источник
Установите для 32-разрядного режима IIS значение true, для режима отладки значение true в файле конфигурации, удаление
temp
каталога и сброс IIS временно устраняют проблему и возвращаются через некоторое время.источник
Убедитесь, что каждый из ваших проектов правильно настроен в Configuration Manager .
По аналогии с причиной этой проблемы Уильяма Эдмондсона , я переключил настройки Configuration Manager с «Отладка», «Любой процессор» на «Отладка», «.NET». Проблема заключалась в том, что версия .NET НЕ была настроена для сборки ВСЕХ проектов, поэтому некоторые из моих DLL были устаревшими (в то время как другие были текущими). Это вызвало многочисленные проблемы с запуском приложения.
Временным решением было сделать предложение Кенни Элиассона очистить каталоги \ bin и \ obj. Тем не менее, как только я внесу больше изменений в некомпилируемые проекты, все снова рухнуло.
источник
Я также получил эту проблему при создании новой надстройки Microsoft Word с Visual Studio 2015. Проблема заключается в том, что у меня есть 2 версии MS Office, 2013 и 2016. Я удаляю MS Office 2013, и затем он работает.
источник
Я создал несколько проектов для SharePoint и, конечно же, развернул их. Однажды это случилось.
Я нашел старую сборку в C: \ Windows \ assembly \ temp \ xxx (с FarManager), удалил ее после перезагрузки и все проекты собрал.
У меня вопрос к MSBuild, потому что в сборках проектов, связанных как проекты, и каждая сборка помечается как «Копировать локально», но не из GAC.
источник
Я могу решить эту проблему, отметив «Копировать локально = True» на всех ссылочных файлах DLL в проекте, перестроив и развернув на тестовом сервере.
источник
У меня была проблема с автоматом. В
bin
папке был файл automap.4net.dll, но по какой-то причине не было automap.xml и automap.dll. Копирование их вbin
каталог решило проблему.источник