Создание сайтов для AnyCpu - PullRequest
1 голос
/ 14 декабря 2010

У меня есть проект веб-сайта .Net 3.5, который я разрабатываю в VS2010 (недавно перенесенный из VS2008) и собираю / разворачиваю с помощью MSBuild и TeamCity.Я использую инструменты Msbuild версии 3.5.Проект веб-сайта связывается с парой COM-компонентов через Interop-dll.Как я понимаю, эти взаимодействия генерируются Visual Studio как оболочка для компонента COM.Моя проблема заключается в том, что когда приложение создается и разворачивается с использованием Microsoft.WebDeployments.targets, я получаю сообщение об ошибке во время выполнения, в котором говорится:

Не удалось загрузить файл или сборку Interop.cvvToolkitLib или одну из ее зависимостей.,Была предпринята попытка загрузить программу с неправильным форматом.

После поиска в Google похожих проблем я обнаружил множество сообщений о том, что сборка для AnyCpu должна решить эту проблему, поскольку инструмент, который являетсягенерация interops по умолчанию x86.

Итак, я открыл свой скрипт сборки и попытался указать платформу как AnyCpu:

<Platform>AnyCPU</Platform>

Все та же проблема.Более гугл намекнул, что это может быть «AnyCpu» или «Любой процессор» вместо этого, поэтому я попробовал оба.Все еще не повезло.Другие сообщения на форуме предлагали что-то вроде этого:

<ItemGroup>
    <ConfigurationToBuild Include="Release|Any CPU">
      <FlavorToBuild>Release</FlavorToBuild>
      <PlatformToBuild>Any CPU</PlatformToBuild>
    </ConfigurationToBuild>
  </ItemGroup>

или

<PlatformTarget>AnyCPU</PlatformTarget>

Ошибка остается прежней.Итак, мой вопрос к вам: stackoverflowers: я делаю что-то не так, пытаясь создать веб-сайт для любого процессора, или решение, возможно, лежит где-то еще?Должен ли я явно передавать некоторые аргументы в <CallTarget Targets="Build"/>?

Я не очень разбираюсь в MSbuild, поэтому я могу упустить что-то важное.У меня есть другие веб-приложения (не веб-сайты), которые общаются с теми же компонентами COM без каких-либо проблем, так что это проблема только для веб-сайтов.Веб-приложения создаются следующим образом:

<MSBuild
      Projects="$(ProjectFile)"
      StopOnFirstFailure="true"
      Targets="ResolveReferences;_CopyWebApplication;_BuiltWebOutputGroupOutput"
      Properties="...Platform=AnyCPU..." />

Здесь я передаю Платформу как свойство, поэтому просто предполагаю, что мне нужно нечто подобное для веб-сайтов.

1 Ответ

0 голосов
/ 16 декабря 2010

Проблема была решена с помощью версии 3.5 MSbuild. Я использовал версию 4.0 с версией инструментов 3.5. По какой-то причине это привело к тому, что dll взаимодействия были созданы на неправильной платформе Я, однако, понятия не имею, почему это было причиной этой проблемы. Я видел несколько странных проблем с использованием MSbuild 4.0 для 3.5-проектов. Если кто-нибудь сможет объяснить мне, почему все это происходит, я буду счастлив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...