Как скомпилировать сайт x64 asp.net? - PullRequest
8 голосов
/ 08 апреля 2010

Я пытаюсь скомпилировать (используя Visual Studio ) веб-сайт ASP.Net с библиотекой Chilkat . Сбой компиляции из-за этой ошибки:

Не удалось загрузить файл или сборку 'ChilkatDotNet2, версия = 9.0.8.0, Culture = нейтрально, PublicKeyToken = eb5fc1fc52ef09bd 'или одна из его зависимостей. Попытка был сделан, чтобы загрузить программу с неверный формат.

Мне сказали, что эта ошибка возникает из-за несоответствия платформы.

Странная вещь в том, что, хотя компиляция не удалась, сайт работает, как только он открывается из браузера. Моя теория состоит в том, что для компиляции IIS используется компилятор csc.exe из папки Framework64 (64-разрядная версия), в то время как Visual Studio использует компилятор csc.exe из папки Framework (32-разрядная версия). Если это действительно так, как мне настроить мою Visual Studio для работы с 64-битным компилятором для сайтов ASP.Net?

Это моя текущая конфигурация разработки:

  • Windows 7 (x64).
  • Visual Studio 2008 Pro (x86, конечно ...).
  • Библиотека Chilkat (x64)
  • IIS / Asp.net (x64).

Ответы [ 2 ]

26 голосов
/ 08 апреля 2010

Почему :
Ваш веб-сайт (управляемая часть, скорее всего, все сторонние) не скомпилирован в 32- или 64-битном режиме, по крайней мере, не так, как выдумаешь.Разница в том, что WebDevServer.exe (версия Cassini ), которую Visual Studio использует для своего веб-сервера, является исключительно 32-битной.Таким образом, он загружает только 32-разрядные совместимые библиотеки DLL.

IIS на 64-разрядной машине может работать в 32- или 64-разрядном режиме (по умолчанию 64-разрядный), в зависимости от настроек конфигурации, поэтому он не имеетпроблема при загрузке приложения.

Решение: К сожалению, здесь не так много вариантов, Я недавно задавал тот же вопрос .Лучше всего использовать IIS для отладки.Вы настраиваете его следующим образом:

  • Веб-проект> Настройки
  • Вкладка «Веб»
  • В разделе «Серверы» выберите Использовать локальный веб-сервер IIS
0 голосов
/ 30 декабря 2011

Решение состоит в том, чтобы поместить обе библиотеки DLL (библиотеки x64 и x86) в GAC и позволить каждому приложению динамически решать, когда использовать библиотеку x64 или x86 (конечно, вам придется ссылаться на библиотеку GAC впроект).

Я лично обсуждал с разработчиком ChilkatDotNet2, и это решение, о котором мы оба договорились.

...