Как скомпилировать сайт x64 asp.net?

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

Не удалось загрузить файл или сборку ChilkatDotNet2, Version = 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).

person Community    schedule 07.04.2010    source источник


Ответы (2)


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

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

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

  • Веб-проект> Настройки
  • Вкладка "Интернет"
  • В разделе "Серверы" выберите Использовать локальный веб-сервер IIS.
person Nick Craver    schedule 08.04.2010
comment
На самом деле, я вижу, что компиляция терпит неудачу для таких проектов (которые, по-видимому, указывает OP) на 64-битных для 64-битных. (в визуальной студии ... все же сайт отлично работает в IIS или 64-битной сборке cassinidev) Нет ничего более разочаровывающего, чем ждать, пока ваша веб-страница загрузится, чтобы узнать, что lint x = 1; должно быть int x = 1; - person ; 13.03.2014

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

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

person Community    schedule 30.12.2011