![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Есть библиотека на C++/CLI. Для использования ее в NET приложениях приходится указывать путь к dll файлу. Как зарегистрировать ее в Reference списке и автоматизировать ее перенос на другие машины.
Заранее благодарен |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Если это C++/CLI библиотека, её можно добавлять через Add Reference обычным способом. На других машинах длл-ка просто должна быть в одной директории с программой. Или я что-то пропустил?
-------------------- ![]() |
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Если dll с программой находятся в одной директории то все нормально. Нужно предусмотреть вариант если они находятся в разных местах. Неплохо бы если реализовать два варианта: 1. если с прогой в одной папке, то регистрация не нужна; 2. если в разных то зарегистрировать.
|
|||
|
||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
Поместить эту сборку в GAC (Global Assembly Cache).
Для этого нужно дать ей строгое имя и зарегестрировать при помощи gacutil. Подробности тут. --------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Это как раз то что нужно, только после того как я проделал все действия, получаю ошибку:
Не использовать auto_gcroot не получится |
|||
|
||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
Попробуй всё таки оставить в Common Language Runtime support просто /clr, не меняя на /clr:oldSyntax.
--------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| Therion |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Пробовал. При компиляции выдает предупреждение:
После того как я пытаюсь зарегистрировать:
|
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Похоже, манифест dll сбрасывает подпись.
-------------------- ![]() |
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Помогло в Project->Properties->Manifest Tool->Input and Output установка параметра Embed Manifest в No. Теперь компиляция проходит без предупреждений и gacutil помещает либу в C:\windows\assemble\GAC_32. Вот только все програмы выплевывают ошибку постоянно, даже если либа в папке с ними :(.
|
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Есть решение:
1. вернуть параметр Project->Properties->Manifest Tool->Input and Output->Embed Manifest обратно в YES 2. убрать [assembly:AssemblyKeyFile("MyLib.snk")]; из AssemblyInfo.cpp 3. установить путь к MyLib.snk файлу в Project->Properties->Link->Advanced->Key File Теперь все работает, но только возникла другая проблема - работают только программы скомпиленные с текущей версией либы, а все другие выплевываю:
Как можно избавится от такой жесткой привязки к версиям? |
|||
|
||||
| yar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 8.9.2007 Где: Одесса, Украина Репутация: нет Всего: 8 |
Можно указать в файле политик издателя глобально, или в конфигурационном файле приложения локально, какую версию сборки использовать. По-умолчанию приложение, использующее сборку со строгим именем загружает ту версию, которая была указана на этапе компиляции.. Мы же можем это поведение переопределить
Пример конфигурационного файла (myapp.exe.config):
Подробнее тут. --------------------
Если бы строители возводили здания так, как программисты пишут программы, первый же дятел уничтожил бы мировую цивилизацию.Джеральд Вайнберг |
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Отлично! Все работает
Спасибо за советы |
|||
|
||||
| Therion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 21.12.2003 Репутация: нет Всего: нет |
Вот описание как все делать на украинском http://progforthedamned.blogspot.com/2008/...mbly-cache.html
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |