2015-06-16 5 views
0

Я пытаюсь запустить существующее решение на своей локальной машине, но каждый раз, когда я пытаюсь запустить его, я получаю ошибку ниже [изображение ниже].Не удалось загрузить файл или сборку - Неправильный формат - Частичное связывание

Не удалось загрузить файл сборки «HtmlToPdfBuilder» или одну из его зависимостей . Была сделана попытка загрузить программу, имеющую неверный формат »

Я не уверен, если это уместно, но также дает информацию о частичной связывания

ПРПЖД: Частичная связыванием информация была предоставлена ​​для сборка

Я не могу найти, откуда появилась dll «HtmlToPdfBuilder», поэтому я не могу проверить, есть ли другая версия. У меня есть мой набор проектов для компиляции с «Любой процессор», но попробовал установить его на x64 и x86, и я также попробовал установить «Включить 32-разрядные приложения» как true, так и False в IIS.

dll сидел в папке вне проекта и ссылался, я попробовал переместить его в проект и ссылаться на него (просто разбить).

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

Я запускаю Visual Studio 2012, и это проект VB.NET.

enter image description here

Update

Это также работает на сервере

  • Я попытался сопоставления мои IIS и веб-сайта настройки
  • я пытался копировать все DLLs из сервер до моего местного машины, но по-прежнему получают ту же ошибку
  • Я также скопировал все свои локальные библиотеки на сервер, а сайт по-прежнему работает нормально там
  • Я также сопоставлял webconfigs, и единственное различие заключается в том, что на инфраструктуре сущности сервера задано значение Version = 4.3.1.0 и локально это версия = 6.0.0.0

ответ

0

Вот что я наконец-то сделал, чтобы исправить это:

  • .net и IIS в командной строке зарегистрирован Re-

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> aspnet_regiis.exe -i

  • Создано новый пул приложений (как перепутались с таким количеством настроек)
  • Set включить 32-бит на пуле приложений
  • перезапущен IIS

Я не могу объяснить, почему это работает, так как нет никаких проблем с любой другой сайты, но, как и я, я думал, что поделюсь с тем, что это помогает кому-то еще.

1

Похоже, вы пытаетесь использовать 32-разрядную DLL на 64-битном приложении (или наоборот), поэтому вот что вы должны использовать.

  1. Откройте Visual Studio командной строки и введите «CorFlags [pathTo]/[сборка]», это покажет вам архитектуру, так что вы можете изменить/проверить у вас есть соответствующие библиотеки DLL.
  2. В Visual Studio перейдите к ссылочным свойствам и проверьте, где они извлекаются. Затем соответствующим образом измените путь обновления на ваш путь к dll, а также скопируйте local в значение true.
  3. Перестроить и запустить.
  4. Если он также работает в IIS, установите для параметра Включить 32-разрядные приложения значение true.
+0

Я попытался это и получил следующее: Версия: v2.0.50727 CLR Header: 2.5 PE: PE32 CorFlags: 0x3 ILONLY: 1 32BITREQ: 1 32BITPREF: 0 Подпись: 0 Я попытался изменить 32BitReq до 0, но это не имело никакого значения. Это то, что вы имели в виду? Никогда не использовали это раньше, поэтому не понимаете. – Bex

+0

Это означает, что DLL 32bit. Поэтому, зная это, быстрое исправление будет просто использовать 64-битную версию этой DLL или проверить, что все проекты и библиотеки DLL, которые используют HtmlToPdfBuilder, построены на 32 битах или ЛЮБОМ ЦП – Slukad

+0

Я установил все проекты, чтобы построить до 32 бит, и это сделало нет разницы, и я понятия не имею, откуда происходит dll htmltopdfbuilder, поэтому я не могу найти другое. Я не понимаю, почему он работает на другой машине! Что мне не хватает? – Bex