Сборка для x86 и x64
От: binom82 Россия  
Дата: 16.01.11 04:40
Оценка:
Я разрабатываю приложение под NF4 на Windows 7 x64.
Мое приложение ссылается на сборку Sborka.dll, которая имеет свою версию для x86 и x64.
Те я хочу чтобы мое приложение работало на WinXP x86.
Как в зависимости от разрядности системы подгрузить соответствующую сборку на этапе выполнения программы?
Re: Сборка для x86 и x64
От: Sinix  
Дата: 16.01.11 05:41
Оценка:
Здравствуйте, binom82, Вы писали:

B>Как в зависимости от разрядности системы подгрузить соответствующую сборку на этапе выполнения программы?


1.Если Sborka.dll — managed, то использовать Assembly.Resolve и LoadFrom. Только почитайте про проблемы, связанные с LoadFrom:
http://blogs.msdn.com/b/suzcook/archive/2003/05/29/57143.aspx
http://msdn.microsoft.com/en-us/library/1009fa28.aspx

2. Ограничиться x86-версией.

3. Билдить отдельные версии своего приложения (build-batch build; использовать переменную msbuild $(Platform) в project references). Распространять отдельные дистрибутивы для каждой платформы.

3.б. Включить в инсталлятор и x86, и x64, за выбор — что запускать — пускай отвечает splash-screen.
Re[2]: Сборка для x86 и x64
От: binom82 Россия  
Дата: 16.01.11 07:04
Оценка:
Здравствуйте, Sinix, Вы писали:



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.
Так вот хотелось бы как-то оптимизировать это процесс?
Можно конкретный пример?
Re[3]: Сборка для x86 и x64
От: Sinix  
Дата: 16.01.11 07:19
Оценка:
Здравствуйте, binom82, Вы писали:


B>Приложение разворачивается с помощью ClickOnce соттветственно при компиляции приложения я выставляю Any CPU.

B>Так вот хотелось бы как-то оптимизировать это процесс?
B>Можно конкретный пример?


Для такой комбинации вариантов кроме как ограничиться x86 не придумывается Принимайте эстафету!
Re[4]: Сборка для x86 и x64
От: binom82 Россия  
Дата: 16.01.11 08:00
Оценка:
Здравствуйте, Sinix, Вы писали:



S>Для такой комбинации вариантов кроме как ограничиться x86 не придумывается Принимайте эстафету!


Вот нашел следующее
Пошаговое руководство. Загрузка сборок по требованию с помощью API развертывания ClickOnce с использованием конструктора
http://msdn.microsoft.com/ru-ru/library/ak58kz04.aspx

Так вот хотелось бы понять как сделать следующее
Пусть при публикации в корневой папке (назовем ее root) с приложения (где лежит исходник) мы положим
две папки с Dir32 и Dir64 где будут лежать сборки для разных версий причем их количество, номера версий и имена совпадают.
Задача только в следующем: необходимо (в зависимости от разрядности OS) просто положить все сборки из папки Dir32 в папку root
(те в корень приложения) на этапе публикации.

Как как это сделать а то не охота себя ограничивать только x86
Re[5]: Сборка для x86 и x64
От: Sinix  
Дата: 16.01.11 08:18
Оценка:
Здравствуйте, binom82, Вы писали:

B>Как как это сделать а то не охота себя ограничивать только x86

Win x64 из коробки поддерживает x86-приложения. Если интересуют подробности — гуглить WoW64.
Если найдёте ещё какое-нибудь решение — отпишитесь!

Удачи!
Re: Сборка для x86 и x64
От: hardcase Пират http://nemerle.org
Дата: 16.01.11 09:00
Оценка:
Здравствуйте, binom82, Вы писали:

B>Как в зависимости от разрядности системы подгрузить соответствующую сборку на этапе выполнения программы?


А вообще в приложении есть какаято специфика работы в x64? Если программе не нужны бонусы x64 — большая память и более шустрые целочисленные вычисления с System.Int64, то особого смысла создавать отдельный x64 билд нет.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Сборка для x86 и x64
От: binom82 Россия  
Дата: 16.01.11 10:21
Оценка:
Здравствуйте, hardcase, Вы писали:





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). Проверяем.
Re[4]: Сборка для x86 и x64
От: binom82 Россия  
Дата: 16.01.11 12:33
Оценка:
Здравствуйте, Аноним, Вы писали:



А>Настраиваем проект, чтобы собирался как x86 (configuration manager, platform = x86). Проверяем.


Это проверим конечно, просто сейчас нет возможности а хотелось бы решить проблему сейчас.

Но на крайний случай я думаю можно сделать следующее:

1)Например разрабатываем приложение на x64 а и используем сборку тоже X64.
2) Публикуем это приложение в двух папках Dir32 и Dir64.
3) Затем в папку Dir32 тупо копируем сборку для X86.

И тогда наверное будет работать. Как вы думаете?
Re[5]: Сборка для x86 и x64
От: me2  
Дата: 16.01.11 13:59
Оценка:
Здравствуйте, 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 (хотя, возможно чего-то
и не знаю).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.