Я разрабатываю приложение под NF4 на Windows 7 x64.
Мое приложение ссылается на сборку Sborka.dll, которая имеет свою версию для x86 и x64.
Те я хочу чтобы мое приложение работало на WinXP x86.
Как в зависимости от разрядности системы подгрузить соответствующую сборку на этапе выполнения программы?
3. Билдить отдельные версии своего приложения (build-batch build; использовать переменную msbuild $(Platform) в project references). Распространять отдельные дистрибутивы для каждой платформы.
3.б. Включить в инсталлятор и x86, и x64, за выбор — что запускать — пускай отвечает splash-screen.
S>1.Если Sborka.dll — managed, то использовать Assembly.Resolve и LoadFrom. Только почитайте про проблемы, связанные с LoadFrom: S>http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57143.aspx S>http://msdn.microsoft.com/en-us/library/1009fa28.aspx
S>2. Ограничиться x86-версией.
S>3. Билдить отдельные версии своего приложения (build-batch build; использовать переменную msbuild $(Platform) в project references). Распространять отдельные дистрибутивы для каждой платформы.
S>3.б. Включить в инсталлятор и x86, и x64, за выбор — что запускать — пускай отвечает splash-screen.
Приведу конкретный пример для работы с Oracle по ODP.NET необходимо несколько сборок одна из которых Oracle.DataAccess.dll.
Версии для X86 и x64 этих сборок разные.
Приложение разворачивается с помощью ClickOnce соттветственно при компиляции приложения я выставляю Any CPU.
Так вот хотелось бы как-то оптимизировать это процесс?
Можно конкретный пример?
B>Приложение разворачивается с помощью ClickOnce соттветственно при компиляции приложения я выставляю Any CPU. B>Так вот хотелось бы как-то оптимизировать это процесс? B>Можно конкретный пример?
Для такой комбинации вариантов кроме как ограничиться x86 не придумывается Принимайте эстафету!
Так вот хотелось бы понять как сделать следующее
Пусть при публикации в корневой папке (назовем ее root) с приложения (где лежит исходник) мы положим
две папки с Dir32 и Dir64 где будут лежать сборки для разных версий причем их количество, номера версий и имена совпадают.
Задача только в следующем: необходимо (в зависимости от разрядности OS) просто положить все сборки из папки Dir32 в папку root
(те в корень приложения) на этапе публикации.
Как как это сделать а то не охота себя ограничивать только x86
Здравствуйте, binom82, Вы писали:
B>Как как это сделать а то не охота себя ограничивать только x86
Win x64 из коробки поддерживает x86-приложения. Если интересуют подробности — гуглить WoW64.
Если найдёте ещё какое-нибудь решение — отпишитесь!
Здравствуйте, binom82, Вы писали:
B>Как в зависимости от разрядности системы подгрузить соответствующую сборку на этапе выполнения программы?
А вообще в приложении есть какаято специфика работы в x64? Если программе не нужны бонусы x64 — большая память и более шустрые целочисленные вычисления с System.Int64, то особого смысла создавать отдельный x64 билд нет.
H>А вообще в приложении есть какаято специфика работы в x64? Если программе не нужны бонусы x64 — большая память и более шустрые целочисленные вычисления с System.Int64, то особого смысла создавать отдельный x64 билд нет.
Это я понял спасибо.
Тогда вопрос ставится по другому.
Если я разрабатываю приложения на x64 а распространяю его на x86.
То будет ли нормально работать Visual Studio cо сборкой для x86
если ее добавить в мое приложения в место такой же сборки для x64 на этапе разработки?
Мне просто кажется что она должна выдать ошибку что эта сборка не совместима с x64.
Re[3]: Сборка для x86 и x64
От:
Аноним
Дата:
16.01.11 10:30
Оценка:
Здравствуйте, binom82, Вы писали:
B>Здравствуйте, hardcase, Вы писали:
B>Это я понял спасибо. B>Тогда вопрос ставится по другому. B>Если я разрабатываю приложения на x64 а распространяю его на x86. B>То будет ли нормально работать Visual Studio cо сборкой для x86 B>если ее добавить в мое приложения в место такой же сборки для x64 на этапе разработки?
B>Мне просто кажется что она должна выдать ошибку что эта сборка не совместима с x64.
Настраиваем проект, чтобы собирался как x86 (configuration manager, platform = x86). Проверяем.
А>Настраиваем проект, чтобы собирался как x86 (configuration manager, platform = x86). Проверяем.
Это проверим конечно, просто сейчас нет возможности а хотелось бы решить проблему сейчас.
Но на крайний случай я думаю можно сделать следующее:
1)Например разрабатываем приложение на x64 а и используем сборку тоже X64.
2) Публикуем это приложение в двух папках Dir32 и Dir64.
3) Затем в папку Dir32 тупо копируем сборку для X86.
Здравствуйте, binom82, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>Настраиваем проект, чтобы собирался как x86 (configuration manager, platform = x86). Проверяем.
B>Это проверим конечно, просто сейчас нет возможности а хотелось бы решить проблему сейчас.
B>Но на крайний случай я думаю можно сделать следующее:
B>1)Например разрабатываем приложение на x64 а и используем сборку тоже X64. B>2) Публикуем это приложение в двух папках Dir32 и Dir64. B>3) Затем в папку Dir32 тупо копируем сборку для X86.
B>И тогда наверное будет работать. Как вы думаете?
Сам не так давно разрабатывал приложение, использующее EF и SQL SERVER. Все компьютеры, задействованные
в процессе разработки — x64 (начинали с Vista, сейчас уже Windows 7). У клиента — XP x86. Проект прекрасно
разрабатывался с platform = x86. Затем без проблем устанавливался на компьютеры клиента. Кстати, так
и не удалось получить доступ к FoxPro OleDb когда platfrom = x64 или Any CPU. Только x86.
Тот же Silverlight на данный момент только x86. Так что весь проект собирается под x86, успешно
запускается (OOB) и вполне себе отлаживается.
Подводя итог всему вышесказанному — если Ваше (скомпилированное как x86) приложение нормально себя чувствует
в среде x64, то не вижу причин, способных помешать разрабатывать его как x86 на x64 (хотя, возможно чего-то
и не знаю).