Точная ошибка выглядит следующим образом
Could not load file or assembly 'Microsoft.SqlServer.Replication, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Недавно я снова начал работать над этим проектом после двухмесячного перехода в другой проект. Раньше он работал отлично, и я дважды проверил все ссылки.





Я нашел решение. Недавно я обновил свою машину до 64-разрядной версии Windows 2008 Server. Пространство имен SqlServer.Replication было написано для 32-битных платформ. Все, что мне нужно было сделать, чтобы он снова заработал, - это установить для целевой платформы в свойствах сборки проекта значение X86.
Мне довелось столкнуться с обратной проблемой вышеупомянутой. У меня все работало в 64-битном режиме, и моей целью сборки был любой процессор. Когда я изменил его на 64-битный, он работал отлично :)
ответ лысый ниже верен, но вам также может потребоваться включить 32-битные приложения в вашем AppPool.
При настройке приложения для запуска на моем локальном компьютере (под управлением Vista 64bit) я обнаружил эту ошибку:
Could not load file or assembly
ChilkatDotNet2or one of its dependencies. An attempt was made to load a program with an incorrect format.
Очевидно, что приложение использует Компоненты ChilKat, но может показаться, что мы используем только 32-битную версию.
Чтобы устранить эту ошибку, я настроил свой пул приложений в IIS, чтобы разрешить 32-битные приложения. Откройте диспетчер IIS, щелкните правой кнопкой мыши пул приложений и выберите «Дополнительные параметры» (см. Ниже).

Затем установите для параметра «Включить 32-разрядные приложения» значение «Истина».

Все сделано!
Приведет ли это к тому, что весь пул приложений будет работать как 32-разрядный, а не полностью 64-разрядный? Будет ли повторная компиляция зависимости для 64-битных / всех платформ лучшим решением? У меня эта проблема из-за NFOP, но, поскольку это открытый исходный код, я могу перекомпилировать его.
Ссылка не работает, но вашего объяснения было достаточно, чтобы решить мою проблему. +1
Ссылка с инструкцией по включению 32-битных приложений: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Возможно, стоит отметить, что это решение AppPool применимо только к приложениям ASP.NET - может сбить с толку некоторых разработчиков, которые никогда не использовали / не настраивали ASP.NET или IIS.
не исправляет в IIS7 только в IIS7.5
Точно такая же проблема с Чилкатом.
Мой вопрос был специально для службы Windows, а ваше решение работает для веб-приложений. Может быть, нам стоит перефразировать вопрос в более общем плане и объединить некоторые ответы.
"Ответ выше" - @ bboyle1234, не могли бы вы это исправить?
Я столкнулся с этой ошибкой при запуске отладки в Visual Studio, и попытался включить ее в IIS, похоже, нет никакой связи и на самом деле не работает.
привет, я не вижу эту опцию ... почему?!?!
Измените значение Platform Target на странице свойств вашего веб-проекта на Any CPU.

К сожалению, не действует.
Я был неправ - это сработало после того, как я избавился от всех своих папок «bin». Спасибо!
Также исправил мою проблему, но только после того, как я сделал это для КАЖДОГО проекта в моем решении. Упомянутые шаги относятся к проектам C#. Для проектов VB.NET измените Project Properties> Compile> Advanced Compile Options> Target CPU на AnyCPU.
В моем случае проект уже был нацелен на «Любой процессор». Но я использую 64-битную Windows и пытаюсь импортировать DllImport старый аппаратный драйвер. В частности, изменение цели на x86 исправило это для меня.
В моем случае я хотел работать под x64. Это не сработало. После изменения всех рекомендаций мне также пришлось поменять «Битнность» в Сети тоже на x64.
Для тех, кто получает эту ошибку в проекте ASP.NET MVC 3, в самой Visual Studio:
В приложении ASP.NET MVC 3, над которым я работаю, я попытался добавить ссылку на Microsoft.SqlServer.BatchParser в проект, чтобы решить проблему, когда она отсутствовала на сервере развертывания. (В нашем приложении используется SMO; правильное решение заключалось в установке собственного клиента SQL Server и нескольких других вещей на сервере развертывания.)
Даже после того, как я удалил ссылку на BatchParser, я продолжал получать ошибку «Была сделана попытка ...» со ссылкой на библиотеку BatchParser на каждой странице ASP.NET MVC 3, которую я открывал, и за этой ошибкой следовали десятки разборов страниц. ошибки.
Если это произойдет с вами, выполните поиск файлов и посмотрите, находится ли DLL все еще в одной из папок \ bin вашего проекта. Даже если вы выполняете перестройку, Visual Studio не обязательно очищает все во всех ваших папках \ bin. Когда я удалил DLL из корзины и построил заново, ошибка исчезла.
Я только что перестроил, и проблема исчезла без необходимости вручную удалять DLL. Спасибо!
Перейти к IIS -> Пул приложений -> Дополнительные настройки -> Включить 32-разрядные приложения
Клей, какую версию IIS вы используете?
Если Публикация в Visual Studio 2012 при ошибке, попробуйте снять флажок с опции «Прокомпилировать во время публикации» в мастере публикации.

Недавно у нас возникла проблема при попытке запустить код из Visual Studio. В таком случае нужно делать
ИНСТРУМЕНТЫ> ОПЦИИ> Проекты и решения> ВЕБ-ПРОЕКТЫ и установите флажок «Использовать 64-разрядную версию IIS Express для веб-сайтов и проектов».
Это то, что в конечном итоге сработало для меня. Специально для тех, кто пытается отлаживать веб-API с помощью библиотек Service Fabric !!! Если вы используете в своем проекте какие-либо библиотеки DLL Service Fabric, убедитесь, что вы используете указанное выше решение.
Это ЕДИНСТВЕННОЕ решение, которое сработало для меня. Спасибо. : D
Работай и для меня!
измените его на 32-битный (правда) он работает
если вы получили эту длину, она не может быть меньше нуля. Имя параметра: проблема длины в конфигурации сервера iis, просто измените строку подключения в файле web.config, например, имя вашего сервера sql и имя сервера, и перезапустите iis, затем попробуйте загрузить страницу, на которой он работает
в приложении windows form я делаю это, Щелкните правой кнопкой мыши Project-> Properties-> Build-> Установите флажок Prefer 32-bit. Спасибо всем
Удалите каталог временного теста, расположенный здесь C: \ Users (Пользователь) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \
Установите все проекты на x64 в Visual Studio
Установите архитектуру процессора по умолчанию на x64 (Test / TestSettings / Default Processor Architecture).
Обязательно очистите сборку файла решения. Надеюсь, это поможет!
У меня это было в приложении MVC5 в Windows 10 против IIS Express. Мое решение было следующим:
У меня сработало изменение Target Framework в свойствах проекта с .NET Framework 4.7.1 на 4.6.2.
У меня проблема с DLL, но в моем Project> HDP Properties ... нет вкладки "Build" (вроде бы все, но не это). На вкладках «Компиляция» и «Отладка» есть раскрывающееся меню «Платформа», но в обоих случаях единственным элементом в раскрывающемся списке является «Активный (любой ЦП)».