ОТКЛЮЧИТЬ АДБЛОК

ADBlock блокирует некоторый контент на сайте

ADBlock errore
Найдены результаты: 

вопрос

<Р> Я установил ELMAH 1,1 .Net 3.5 x64 в моем проекте ASP.NET, и теперь я получаю эту ошибку (всякий раз, когда я пытаюсь видеть любую страницу):

  <Р> Не удалось загрузить файл или сборку   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.

     <Р> Описание:   необработанное исключение во время   выполнение текущего веб   запрос. Пожалуйста, просмотрите трассировку стека   Для получения дополнительной информации об ошибке   и где она возникла в коде.

     <Р> Сведения об исключении:   System.BadImageFormatException: Не могли бы   не загрузить файл или сборку   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.

Подробнее об ошибках в нижней части.

<Р> Моя Активная платформа решения является «Любой процессор», и я бегу на x64 Windows 7 на x64, конечно, процессор. Причина, почему мы используем эту версию Elmah потому, что 1,0 .Net 3.5 (x86, который является единственной платформой, для которой он компилируется) дал нам эту же ошибку на нашем сервере x64 Windows.

<Р> Я попытался компиляции для x86 и x64, и я получаю ту же ошибку. Я попытался удалить Выдавать компилятор (бен и объект). Наконец я сделал ссылку на SQLite DLL непосредственно, то, что не нужно было для проекта, чтобы работать на сервере, и я получил эту ошибку компилятора:

  <Р> Ошибка 1 Предупреждение, как Ошибка: поколение Сборка - Реферировано сборки цели «» System.Data.SQLite.dll другой процессор MyProject
<Р> Есть идеи, что проблема может быть?

<Р> подробнее Больше об ошибке:

  <Р> Источник ошибки:

     <Р> Необработанное исключение генерируется   во время исполнения тока   веб-запрос. Информация, касающаяся   Происхождение и расположение, за исключением   могут быть идентифицированы с использованием исключения   Трассировка стека ниже.      <Р> Трассировка стека:

     <Р> [BadImageFormatException: Не удалось   загрузить файл или сборка   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.]
  System.Reflection.Assembly._nLoad (AssemblyName   имя_файла, String CodeBase, Evidence   assemblySecurity, Ассамблея   locationHint, StackCrawlMark &   stackMark, Boolean   throwOnFileNotFound, Boolean   forIntrospection) +0
  System.Reflection.Assembly.nLoad (AssemblyName   имя_файла, String CodeBase, Evidence   assemblySecurity, Ассамблея   locationHint, StackCrawlMark &   stackMark, Boolean   throwOnFileNotFound, Boolean   forIntrospection) +43
  System.Reflection.Assembly.InternalLoad (AssemblyName   assemblyRef, Evidence   assemblySecurity, StackCrawlMark &   stackMark, булева forIntrospection)   +127 System.Reflection.Assembly.InternalLoad (String   assemblyString, Evidence   assemblySecurity, StackCrawlMark &   stackMark, булева forIntrospection)   +142 System.Reflection.Assembly.Load (String   assemblyString) +28
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String   AssemblyName, булева starDirective)   +46

     <Р> [ConfigurationErrorsException: Могли   не загрузить файл или сборку   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.]
  System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String   AssemblyName, булева starDirective)   +613 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory ()   +203 System.Web.Configuration.CompilationSection.LoadAssembly (AssemblyInfo   аи) +105
  System.Web.Compilation.BuildManager.GetReferencedAssemblies (CompilationSection   compConfig) +178
  System.Web.Compilation.BuildProvidersCompiler..ctor (VirtualPath   configPath, Boolean   supportLocalization, String   outputAssemblyName) +54
  System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult (Boolean   isPrecompiledApp) +232
  System.Web.Compilation.BuildManager.CompileGlobalAsax ()   +52 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled ()   +337      <Р> [HttpException (0x80004005): Не удалось   загрузить файл или сборка   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.]
  System.Web.Compilation.BuildManager.ReportTopLevelCompilationException ()   +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled ()   +512 System.Web.Hosting.HostingEnvironment.Initialize (ApplicationManager   AppManager, IApplicationHost appHost,   IConfigMapPathFactory   configMapPathFactory,   HostingEnvironmentParameters   hostingParameters) +729      <Р> [HttpException (0x80004005): Не удалось   загрузить файл или сборка   «System.Data.SQLite, Version = 1.0.61.0,   Culture = нейтрально,   PublicKeyToken = db937bc2d44ff139' или   один из его зависимостей. Попытка   было сделано, чтобы загрузить программу с   неверный формат.]
  System.Web.HttpRuntime.FirstRequestInit (HttpContext   контекст) +8896783
  System.Web.HttpRuntime.EnsureFirstRequestInit (HttpContext   контекст) +85
  System.Web.HttpRuntime.ProcessRequestInternal (HttpWorkerRequest   иг) +259

Решение

<Р> System.Data.SQLite.dll представляет собой смешанные сборки, то есть он содержит как управляемый код и машинный код. Поэтому конкретный System.Data.SQLite.dll либо x86 или x64, но не оба.

<сильный> Update ( любезно J. Pablo Fernandez ): Кассини, веб-сервер разработки используется Visual Studio при нажатии клавиши F5 или нажмите зеленую «Play» кнопку, является x86 только что означает, что даже если ваша рабочая станция x64, вы будете в состоянии использовать x86 версию System.Data.SQLite.dll.

<Р> Альтернативным не использовать Кассини, но IIS7, который должным образом 64.

Если хотите, оставьте нам свое мнение

Была ли статья полезна и правильно ли она переведена?

ДРУГИЕ СОВЕТЫ

<Р> Убедитесь, что «Enable 32 - битных приложений». Устанавливается в ложь для пула приложений

<Р> Перейти к IIS7 Application Pool -> advanced settings and set the 32-bit application to true.

<Р> Это очень просто, если вы не используете SQLite:

<Р> Вы можете удалить SQLite библиотеки DLL из бин папки вашего решения, а затем из папки, где вы ссылаетесь ELMAH. Перестройка, и ваше приложение не будет пытаться загрузить этот DLL, которые вы не используете.

<Р> У меня есть 64-битный Dev машина и 32-битный сервер сборки. Я использовал этот код до начала NHibernate инициализации. Работает очарование на любой архитектуре (ну 2 я проверял)

<Р> Надеюсь, что это поможет кому-то.

<Р> Гвидо
        private static void LoadSQLLiteAssembly()
        {
            Uri dir = new Uri(Assembly.GetExecutingAssembly().CodeBase);
            FileInfo fi = new FileInfo(dir.AbsolutePath);           
            string binFile = fi.Directory.FullName + "\\System.Data.SQLite.DLL";
            if (!File.Exists(binFile)) File.Copy(GetAppropriateSQLLiteAssembly(), binFile, false);
        }

        private static string GetAppropriateSQLLiteAssembly()
        {
            string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
            string arch = ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? "32" : "64");
            return GetLibsDir() + "\\NUnit\\System.Data.SQLite.x" + arch + ".DLL";
        }

<Р> Как кто-то, кто имел дело с довольно много сообщений об ошибках Roadkill Wiki с точно такой же вопрос, это то, что вам нужно сделать следующее:

  • Вы используете x64 или x86? Sqlite поставляется с DLL, для отдельных архитектур - скопировать право один в папку BIN, есть два DLLS для официального поставщика: System.Data.SQLite.dll System.Data.SQLite.Linq.dll
  • Если вы не можете быть обеспокоены охоты вокруг этих сборок, включите 32 битный режим для пула приложений (решение для Дев машин только обычно)
  • Если вы размещаете на сервере, вам нужно распространяемый Microsoft C ++ времени выполнения - он не установлен на Server 2008 R2 по умолчанию. x64 версия , x86 версия
<Р> Это реальная боль в заднице, сколько обручи вам придется прыгать через, когда повторно распределяя .NET двоичные файлы SQLite, мое решение для Roadkill в конце концов было скопировать правильные двоичные файлы в папку ~ / бен основе на архитектура вашего использования. К сожалению, это не решает C ++ проблемы во время выполнения.

<Р> Я решил это путем установки System.Data.SQLite с расширением NuGet. Это расширение можно использовать для Visual Studio 2010 или выше. Во-первых, необходимо установить расширение NuGet. Вы можете следить здесь:

  • Перейдите в Visual Studio 2010, Меню -> Инструменты
  • Выберите Диспетчер Extension
  • Введите NuGet в поле поиска и нажмите кнопку Online Gallery. Ожидание этого Получения информации о ...
  • Выберите извлеченную NuGet Package Manager, нажмите кнопку Загрузить. Ожидание это Загрузка ...
  • Нажмите кнопку Установить на зрительную менеджера студии Extension Installer NuGet пакета. Дождитесь окончания установки.
  • Нажмите кнопку Закрыть и «Restart Now.
<Р> Во-вторых, теперь вы можете установить SQLite:

<Р> А теперь, вы можете использовать System.Data.SQLite. <Р> В случае, вы увидите две папки x64 и x86, эти папки содержат SQLite.Interop.dll. Теперь перейдите к свойствам окон этих библиотек DLL и набор действий сборки содержание и Копировать в выходной каталог является Copy всегда.

<Р> Итак, что это мой путь. <Р> Спасибо. Ким Тхо Ф, ХоШиМин, Вьетнам. Email: tho.phamkim@gmail.com

<Р> Руководство, связанные с нагрузкой System.Data.SQLite сборка может решить эту проблему.

<Р> Изменено gatapia код с, как показано ниже:

    public static void LoadSQLLiteAssembly()
    {
        Uri dir = new Uri(Assembly.GetExecutingAssembly().CodeBase);
        FileInfo fi = new FileInfo(dir.AbsolutePath);
        string appropriateFile = Path.Combine(fi.Directory.FullName, GetAppropriateSQLLiteAssembly());
        Assembly.LoadFrom(appropriateFile);
    }

    private static string GetAppropriateSQLLiteAssembly()
    {
        string pa = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
        string arch = ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? "32" : "64");
        return "System.Data.SQLite.x" + arch + ".DLL";
    }

<Р> Я получил эту ошибку, когда наш сервер окна был преобразован из 32-битных ОС до 64 бит. Сборки, которая бросает ошибку была установлена ​​для компиляции в режиме x86 (то есть 32 режим). Я включил его в «Any CPU» и что сделал трюк. Вы можете изменить это значение, выполнив следующие действия:

<Р> правой кнопкой мыши по проекту идут в Properties -> Build -> Platform Target -> change to "Any CPU"

<Р> Я решил это, как ни странно, установив System.Data.SQLite через приложение NuGet GUI, в отличие от консоли менеджера пакетов.

<Р> Установка с помощью консоли не включают зависимостей эта библиотека должна работать.

<Р> Я пришел с 2 быстрых решений. Либо работать для меня. Я думаю, что проблема из-за разрешения.

<Р> 1) Вместо того, чтобы использовать файл Elmah.dll из сетчатой ​​2,0 каталога, я использовал Elmah.dll из нетто-1.1.

<Р> 2) Вместо того чтобы держать Elmah.dll в директории проекта бен. Я делаю каталог DLL, чтобы поместить его.

<Р> Другой способ обойти это просто обновить приложение Elmah 1.2, а не 1.1.

<Р> System.Data.SQLite имеет зависимость от System.Data.SQLite.interop убедитесь, что оба пакета являются той же версии и оба x86 .

<Р> Это старый вопрос, но я попробовал все выше. Я работал на строго <сильный> x86 проекта, так что не было две папки / x86, / x64. Но по какой-то причине, System.Data.SQLite была другая версия для System.Data.SQLite.interop, когда я потянул вниз соответствие DLLs проблема была зафиксирована.

Можно ли удалить папку бин отладки и перекомпилировать снова?

<Р> Или проверить ссылку на проект на System.Data.SQLite, выследить, где он находится, а затем откройте DLL в отражателе. Если вы не можете открыть его, что означает, что длл поврежден, вы можете найти правильный или переустановить рамки .net.

<Р> Если вы используете IIS Express в качестве веб-сервера на вашей машине, я изменил бы на местном IIS. Это работает для меня.

<Р> Это старый пост, но это может помочь некоторым людям поиска на этой ошибке попытаться установить «Enable 32-битные приложения» Истину для пула приложений. Это то, что ошибка устранена для меня. Я пришел на это решение, читая некоторые комментарии к @ beckelmw Ответим.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow