Подтвердить что ты не робот

Создание проекта веб-сайта как 32-битного на 64-битном сервере сборки

У меня есть решение VS 2010, которое содержит веб-сайт с веб-сервисом. Веб-служба ссылается на DLL COM, что вызывает проблемы, когда решение построено на нашем 64-битном сервере сборки. Я получаю типичную 32/64-битную ошибку:

ASPNETCOMPILER: ошибка ASPCONFIG: Не удалось загрузить файл или сборку "xxx" или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом

Когда я создаю сайт с помощью 32-разрядного aspnet_compiler, он строит все в порядке. Итак, как я могу указать, что веб-сайт должен быть построен как 32-битный? Диспетчер конфигурации в VS разрешит мне выбрать любой CPU, поэтому я не могу изменить его на x86 для этого веб-сайта...

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать следующую команду. На самом деле, в этом случае вы используете версию ASP.NETCompiler x86 для создания собственного проекта

call "C:\Program Files\Microsoft Visual Studio 2008\VC\vcvarsall.bat" x86
MSBuild MySolutiuon.sln 

Вы также можете использовать x86_amd64 для любого процессора. Обратите внимание, что вместо MSBuild вы можете загрузить свою конфиги, например

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <Target Name="PrecompileWeb">
     <AspNetCompiler
         VirtualPath="/MyWebSite"
         PhysicalPath="c:\inetpub\wwwroot\MyWebSite\"
         TargetPath="c:\precompiledweb\MyWebSite\"
         Force="true"
         Debug="true"
         FixedNames="True"
     />
 </Target>
</Project> 

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

MSBuild your.xml /p:Configuration=Release

Ответ 2

@Vilx, проверьте хост зависимостей, чтобы узнать, как далеко он доходит. Я предполагаю, что это, вероятно, остановится на vjsnativ.dll. Если это возможно, попробуйте это обходное решение.

В противном случае вам придется преследовать каждую DLL, которую программа не может найти, и скопировать их в каталог вашей программы (или ее bin).

Ответ 3

Это не проблема компиляции, а проблема среды. Веб-сайт ASP.NET всегда будет построен как любой процессор.

Однако, если вы загружаете его на 64-битную машину, по умолчанию выполняется 64-разрядная версия IIS, которая не может загрузить COM DLL, и он не работает.

Вам нужно настроить IIS для запуска 32-разрядных приложений на 64-битной Windows: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx

Ответ 4

Вам нужно использовать Инструмент компиляции ASP.NET(Aspnet_compiler.exe). Найдите раздел "Поиск правильной версии Aspnet_compiler.exe" в конце документа, в нем объясняется, как найти 32-битные версии этого инструмента с 64-разрядными версиями.

Ответ 5

Щелкните правой кнопкой мыши на своем веб-проекте в Visual Studio.
Выберите "Свойства".
Перейдите на вкладку "Построить" слева.
В разделе "Общие" измените "Target Platform" на "x86", поэтому он будет всегда строить для 32-разрядных версий.

Теперь, когда вы это сделаете, вы можете заметить на той же вкладке "Build", что для "Конфигурация" установлено значение "Active (Debug)". Вам нужно будет изменить этот раскрывающийся список ко всем различным настройкам конфигурации (например, "Release", "QA", "Staging", "Demo" и т.д.) И сделать так же "Platform Target", x86 "для каждого из них.

Не забудьте нажать кнопку "Сохранить", когда вы закончите - не забудьте вернуть его в "Отладка", если вы находитесь в своем окне разработки.

Вероятно, это работает, только когда вы создаете его на своем компьютере, а не на сервере сборки, поскольку сервер сборки, скорее всего, настроен на сборку с другой конфигурацией - это правильно, потому что вы не должны использовать конфигурацию "Отладка" на сервере сборки.

Ответ 6

Хотя это старый вопрос, я столкнулся с одной и той же проблемой, и у меня возникли проблемы с поиском ответа.

Visual studio предлагает два варианта разработки веб-приложений: веб-сайты и веб-приложения. Мы прикладываем сборки на страницу, которые динамически обновляются, если источник изменяется. С другой стороны, проекты веб-приложений скомпилированы в визуальной студии на одну сборку. Эта сборка автоматически не восстанавливается после изменений исходного кода. Различия подробно описаны в этом документе: http://msdn.microsoft.com/en-us/library/aa730880(VS.80).aspx#wapp_topic5

Другим отличием, которое здесь имеет значение, является то, что проекты веб-приложений позволяют фактически выбирать архитектуру, противоречащую проектам веб-сайтов. Преобразование веб-сайта в веб-приложение не очень сложно, но не слишком просто (вариант преобразования в веб-приложение доступен только после создания... веб-приложения). Шаги, которые вы можете предпринять:

  • Создание нового веб-веб-приложения
  • Перейдите в каталог нового веб-приложения и скопируйте все файлы с вашего сайта (переписывая что-либо в каталоге)
  • Добавить все файлы в проект
  • Щелкните правой кнопкой мыши проект и выберите "Преобразовать в веб-приложение".
  • Может потребоваться решить несколько проблем с пространством имен.