Я отримую помилку "Була спроба завантажити програму з неправильним форматом" на проекті реплікації SQL Server


318

Точна помилка полягає в наступному

Не вдалося завантажити файл або збірку 'Microsoft.SqlServer.Replication, Version = 9.0.242.0, Culture = нейтральна, PublicKeyToken = 89845dcd8080cc91' або одна з її залежностей. Була зроблена спроба завантажити програму з неправильним форматом.

Нещодавно я знову почав працювати над цим проектом після двомісячного переходу на інший проект. Раніше це справно працювало, і я двічі перевірив усі посилання.

Відповіді:


405

Відповідь на балди нижче є правильним, але також , можливо , буде потрібно включити 32-розрядні додатки в вашому AppPool.

Джерело: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependitions-an-attempt-was-made-to-load- a-program-with-an-неправильний формат /

Під час налаштування програми для запуску на моїй локальній машині (під керуванням Vista 64bit) я зіткнувся з цією помилкою:

Не вдалося завантажити файл чи збірку ChilkatDotNet2або одну з його залежностей. Була зроблена спроба завантажити програму з неправильним форматом.

Очевидно, що додаток використовує компоненти ChilKat , але, здавалося б, версія, яку ми використовуємо, є лише 32-бітовою версією.

Щоб вирішити цю помилку, я встановив свій пул додатків у IIS, щоб дозволити 32-бітні програми. Відкрийте менеджер IIS, клацніть правою кнопкою миші на пулі додатків та виберіть Додаткові налаштування (Див. Нижче)

введіть тут опис зображення

Потім встановіть для параметра "Увімкнути 32-розрядні програми" значення True.

введіть тут опис зображення

Все зроблено!


Чи це призведе до того, що весь пул програм працює як 32-розрядний, а не повний 64-розрядний? Чи може перекомпіляція залежності для 64-бітних / всіх платформ було кращим рішенням? У мене виникає ця проблема через NFOP, але оскільки вона є відкритим кодом, я могла б її знову скласти.
jamiebarrow

2
Посилання не працює, але вашого пояснення було достатньо, щоб вирішити мою проблему. +1
Андрій Пастух

Посилання з інструкціями про те, як увімкнути 32-розрядні програми: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Brandon S

15
Можливо, варто відзначити, що це рішення AppPool застосовується лише до програм ASP.NET - може заплутати деякі розробники, які ніколи не використовували / не налаштовували ASP.NET або IIS.
галактор

не виправляє його в IIS7 лише в IIS7.5
FlavorScape

120

Я знайшов рішення. Нещодавно я оновив свою машину до 64-розрядної версії Windows 2008 Server. Простір імен SqlServer.Replication був записаний для 32-бітних платформ. Все, що мені потрібно було зробити, щоб знову запустити його, було встановити цільову платформу в властивостях Build Project на X86.


У мене є ця проблема з DLL, але мій Project> HDP Properties ... не має вкладки "Build" (здавалося б, все, але не це). І на вкладках Compile та Debug є спадне меню "Платформа", але єдиним елементом у спадному меню в обох випадках є "Active (будь-який процесор)".
Б. Клей Шеннон

У мене трапилося зворотне вищезазначене. У мене все працювало в 64 бітах, і моєю ціллю Build був будь-який процесор. Коли я змінив це на 64-розрядний, він працював чудово :)
Мадхурія Ганді

87

Змініть значення для цілі платформи на сторінці властивостей веб-проекту на Any CPU.

введіть тут опис зображення


На жаль, не має ефекту.
Джонатан

4
Я помилявся - це спрацювало, після того як я позбувся всіх своїх папок «бін». Дякую!
Джонатан

Також виправили свою проблему, але лише після того, як це зробили для КОЖНОГО проекту в моєму вирішенні. Зазначені кроки стосуються проектів C #. Для проектів VB.NET змініть Властивості проекту> Компілювати> Розширені параметри компіляції> Цільовий процесор на "AnyCPU"
Франсуа Бота

6
У моєму випадку проект вже орієнтувався на "Будь-який процесор". Але я працюю в 64-розрядному Windows і намагався DllImport драйвер обладнання для старої школи. Конкретно зміни цілі на x86 виправили це для мене.
bsegraves

У моєму випадку я хотів працювати під x64. Це не працювало. Змінивши всі рекомендації, мені також довелося змінити "Bitness" в Інтернеті також на x64
SKCS Kamal

52

Перейдіть до IIS -> Пул додатків -> Заздалегідь налаштування -> Увімкнути 32-бітні програми


Глина, яку версію IIS ви використовуєте?
Гарпал

23

Нещодавно у нас виникла проблема при спробі запуску коду від Visual Studio. У цьому випадку вам потрібно зробити
ІНСТРУМЕНТИ> ВАРІАНТИ> Проекти та рішення> WEB ПРОЕКТИ та встановити прапорець "Використовувати 64-бітну версію IIS Express для веб-сайтів та проектів".


1
Це те, що в кінцевому рахунку працювало для мене. Спеціально для людей, які намагаються налагодити Web API з бібліотеками Service Fabric !!! Якщо ви використовуєте будь-які DLL-сервісні сервісні файли у своєму проекті, переконайтеся, що ви використовуєте вищезазначене рішення.
Кріс Дутра

Це ТІЛЬКЕ рішення, яке працювало на мене. Дякую. : D
Jeremy Styers

Працюй і для мене!
Cù Đức Hiếu

11

Для тих, хто отримує цю помилку в проекті ASP.NET MVC 3 , у самій Visual Studio:

У додатку ASP.NET MVC 3, над яким я працюю, я спробував додати посилання на Microsoft.SqlServer.BatchParser до проекту, щоб вирішити проблему, де її не було на сервері розгортання. (У нашому додатку використовується SMO; правильним виправленням було встановлення Native Client SQL Server та ще декілька речей на сервері розгортання.)

Навіть після того, як я видалив посилання на BatchParser, я продовжував отримувати помилку "Була зроблена спроба ...", посилаючись на DLL BatchParser, на кожній відкритій нами сторінці ASP.NET MVC 3, після цієї помилки супроводжувалося десятки розбору сторінок помилки.

Якщо це трапляється з вами, проведіть пошук файлів і перевірте, чи DLL все ще знаходиться в одній з \ bin папок вашого проекту. Навіть якщо ви перестроюєте, Visual Studio не обов'язково очищає все у всіх папках \ bin. Коли я видалив DLL з кошика і знову створив, помилка усунулася.


Я щойно зробив перебудову, і проблема пішла без необхідності видаляти DLL вручну. Дякую!
Тревор

4

У мене це було в додатку MVC5 в Windows 10 проти IIS Express. Моє рішення полягало в наступному:

  • Інструменти =>
    • Опції =>
      • Проекти та рішення =>
        • Веб-проекти =>
          • Використовуйте 64-бітну версію IIS Express для веб-сайтів та проектів

3

змінити його на 32-розрядне (справжнє) воно працює

якщо ви отримаєте цю довжину, не може бути менше нуля. Ім'я параметра: проблема з довжиною в конфігурації сервера iis. Зробіть просту річ, змініть рядок підключення у файлі web.config, як ваше ім'я сервера sql та ім'я сервера, і перезапустіть iis, а потім спробуйте завантажити сторінку, на якій він працює


2

Якщо публікація в Visual Studio 2012 при помилці, спробуйте зняти прапорець "Прокомпілювати під час публікації" у майстрі публікації.

Зніміть прапорець "Прекомпілювати під час публікації"


0

у програмі Windows форми Я це роблю, клацніть правою кнопкою миші на Project-> Properties-> Build-> Check Prefer 32-bit checkbox. Дякую усім


0
  1. Видаліть тестовий каталог із темп, розміщений тут C: \ Users (Користувач) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Встановіть усі проекти на x64 у Visual Studio

  3. Встановіть архітектуру процесора за замовчуванням на x64 (Test / TestSettings / Default Processor Architecture).

Не забудьте очистити збірку файлу рішення. Сподіваємось, це допомагає!


0

Для мене працювала зміна цільової рамки властивостей проекту з .NET Framework 4.7.1 на 4.6.2.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.