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

Настройка таргетинга на x86 и x64?

У меня есть программа, которая требует как x64, так и x86 dll (она определяет, какие из них нужны во время выполнения), но при попытке создать настройку она жалуется:

Файл AlphaVSS.WinXP.x64.dll "таргетинг" AMD64 "несовместим с целевой платформой проекта" x86 "
Файл AlphaVSS.Win2003.x64.dll "таргетинг" AMD64 "несовместим с целевой платформой проекта" x86 "
Файл AlphaVSS.Win2008.x64.dll "таргетинг" AMD64 "несовместим с целевой платформой проекта" x86 "

Как я могу настроить настройку для обеих платформ, как моя программа?

4b9b3361

Ответ 1

MSI, созданный проектом установки (в Visual Studio), может ориентироваться только на одну платформу за раз. Ваш вариант состоит в том, чтобы либо сделать 2 MSI, объединить их вместе и создать настраиваемый установочный загрузочный ленту, который выбирает между ними. Например, есть некоторые сторонние продукты, например Advanced Installer, которые могут сделать это для вас.

Ответ 2

Я столкнулся с этим и написал сообщение в блоге о моем решении:

  • сфотографировать файл с помощью deflate.exe, называя его другим расширением (например .x64)
  • добавьте его в свой основной проект в качестве файла содержимого
  • добавить в проект специальный проект действия
  • добавить пользовательские действия в проекты установки "Установить" пользовательские действия
  • раздуйте файл внутри пользовательских действий. Установите метод, используя
  • System.IO.Compression.DeflateStream(см. код выше)
  • сделайте маленький танец вокруг вашего стола, вниз по коридору и пройдете столько же сотрудников, сколько вам нужно:)

Файл deflate.exe можно загрузить из своего репозитория в коде google.

Ответ 3

.Net имеет опцию "Любой процессор". Это заставляет задуматься об этом как о "универсальном" варианте, который будет использовать только меньшие функции x86, но на самом деле он позволяет компилятору JIT на каждой машине выбирать соответствующий тип процессора для этой машины.

Единственный раз, когда вы не должны его использовать, - это знать, что у вас есть зависимости или требования, которые не подходят для одной архитектуры или другой. Например: вы знаете, что вам нужно много баранов, у вас есть зависимость от 32-разрядной локальной библиотеки dll, или вы хотите предварительно скомпилировать приложение.

Здесь существует опасность, потому что у вас есть зависимость DLL от конкретной платформы. Но у вас есть dll для обоих типов, и кажется, что вы знаете, как выбрать правильный вариант во время выполнения. Так будет ли работать опция "Любой процессор"?

Ответ 4

  • Откройте проект развертывания.
  • В обозревателе решений выберите проект развертывания.
  • В окне "Свойства" выберите свойство TargetPlatform.
  • Выберите либо Itanium для 64-разрядной платформы Intel Itanium, либо x64 для любой другой 64-разрядной платформы (например, наборы команд AMD64 и EM64T).
  • Во время установки будет поднята ошибка, и установка будет остановлена, если целевой компьютер несовместим с указанной платформой.