2009-03-05 3 views
3

Что мы будем делать, если у нас есть некоторые разработчики, работающие на 64-битных машинах, а некоторые на 32-битных машинах, но нам нужно ссылаться на неуправляемые сборки, которые должны быть в x86 для половины команды и x64 для другой половины? Есть ли решение, помимо ручного обновления ссылок каждый раз, когда кто-то на 64-битной платформе становится последним?Неуправляемые сборки x64 в смешанной среде разработки .NET

ответ

1

Вы хотите сделать это как часть своей сборки, не так ли?

Напишите шаг предварительной сборки, чтобы скопировать ссылочную DLL из постоянной позиции в исходное дерево в локальный проект. Используйте макрос $ (ConfigurationName) или $ (PlatformName), чтобы выбрать, какая версия неуправляемой DLL фактически копируется. Вы просто держите свои DLL в отдельных папках с именами, которые соответствуют имени конфигурации или имени платформы.

+0

Собственно, это во время разработки. У нас есть решение для процесса сборки на месте, но некоторые из разработчиков на самом деле компилируются в Debug | x64. – PeteK

1

Весьма странно, что разработчики с машиной x64 охотно запускают 64-битную версию. Visual Studio не поддерживает Edit + Continue в режиме x64, это довольно простое поражение. Обходной путь для этого прост, установите платформу Target на x86. Автоматически также решать вашу неуправляемую проблему с DLL.

+0

Странно, и я обсужу это с тремя черными овцами, но было бы еще лучше, если бы было решение этого. Наверное, это довольно банальный случай, но я буду продолжать смотреть. – PeteK

0

Существует еще одно решение, которое требует небольшого редактирования кода. Он описан в ответе от Milan Gardian до this question.

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

Моя ситуация такова:
Я разрабатываю .NET-программу, предназначенную для «любого процессора» в Windows 7 64-бит. Я добавил 32-битную ссылку на сборку и установил Copy Local в false. Я использую события после сборки, чтобы скопировать 32- и 64-разрядную сборку в выходную папку, и я уверен, что дать 32-разрядной сборке другое имя, чем в ссылке. Это связано с тем, что я хочу заставить свой пользовательский ассемблер выполнить команду и выполнить ее, из-за того, что .NET-сборщик по умолчанию не может разрешить ссылку. Во время выполнения правильная сборка загружается, и во время компиляции я не получаю ошибок. Следует отметить, что у меня не было времени, чтобы фактически подтвердить, что теперь это работает на 32-битной ОС, но я не вижу причин, почему это не должно работать.

 Смежные вопросы

  • Нет связанных вопросов^_^