|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Есть живой пример: https://powerbi.microsoft.com/en-us/desktop/ Интересная утилита. Я хочу приконнектиться к PostgreSQL, пишет ошибку. После установки провайдера для постгреса Npgsql в GC - подключается к постгресу и т.д. Вопрос: можно ли заставить приложение искать Npgsql.dll не в GC, а в текущем фолдере, куда я просто его скопирую? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 15:04 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг Хупин, How the Runtime Locates Assemblies ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 15:43 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
buserРолг Хупин, How the Runtime Locates Assemblies Сделал так: 1. создал фолдер DLLS внутри фолдера BIN, откуда запускается эхэ, и скопировал туда Npgsql.dll 2. В конфиг файл приложения добавил Код: c# 1. 2. 3. 4. 5.
Всеравно не видит провайдер, если установить его в GC - тогда видит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:01 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг ХупинbuserРолг Хупин, How the Runtime Locates Assemblies Сделал так: 1. создал фолдер DLLS внутри фолдера BIN, откуда запускается эхэ, и скопировал туда Npgsql.dll 2. В конфиг файл приложения добавил Код: c# 1. 2. 3. 4. 5.
Все равно не видит провайдер, если установить его в GC - тогда видит. Убрать точку с запятой в конце имени папки в privatePath. Предупреждаю сразу: относительные пути в этом элементе - только относительно папки расположения exe вглубь этой папки. И вроде как абсолютные пути этот элемент тоже не поддерживает. При каком-то более другом расположении копать в сторону AppDomain.AssemblyResolve Event . ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:19 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг Хупин, У нас в папке exe и Conn = new NpgsqlConnection (string) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:20 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
P.S. Чтобы не создавать папку для библиотек руками, и не копировать ни руками, ни в post-build event'е - добавить в .csproj: Код: xml 1. 2. 3. 4. 5. 6.
Ну, или установить PrettyBin . Он заодно автоматом вносит нужные модификации и в конфиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:24 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныP.S. Чтобы не создавать папку для библиотек руками, и не копировать ни руками, ни в post-build event'е - добавить в .csproj: Код: xml 1. 2. 3. 4. 5. 6.
Ну, или установить PrettyBin . Он заодно автоматом вносит нужные модификации и в конфиг. да, но в данном случае - это приложение не моё, Майкрософта. Я просто хотел бы избежать установки провайдера в GC. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:26 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг Хупинда, но в данном случае - это приложение не моё, Майкрософта. Я просто хотел бы избежать установки провайдера в GC. Ну конфиг у этого приложения имеется? Если да - откорректируйте его вручную, и вручную создайте папки/скопируйте файлы. Если нет - тогда ой. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 17:39 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
cкажите пусть ищет в ООН. Сборки можно загрузить в домен и во время выполнения, если сильно надо, не зависимо от каких либо путей. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2017, 23:18 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Roman MejtesСборки можно загрузить в домен и во время выполнения, если сильно надо, не зависимо от каких либо путей. И у стороннего приложения без исходников? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 03:05 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРолг Хупинда, но в данном случае - это приложение не моё, Майкрософта. Я просто хотел бы избежать установки провайдера в GC. Ну конфиг у этого приложения имеется? Если да - откорректируйте его вручную, и вручную создайте папки/скопируйте файлы. Если нет - тогда ой. да, выше я описал, что сделал http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1278038&msg=20978682 Не верится, что нет решения через конфиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 11:55 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Хочу присоединиться к данной теме. Есть вопросы по assembly. . Например. Есть папка C:\Work\Program2\Bin\ где лежит исполняемый модуль программы A1.exe . Данный программный модуль A1.exe вызывает некую стороннюю DLL (DLL1.dll), которая лежит в папке C:\Work\Program1\ . Папки C:\Work\Program1\ , C:\Work\Program2\Bin\ НЕ входят в переменную окружения %Path% и не являются системными. . Как сделать так, чтобы программный модуль A1.exe в папке C:\Work\Program2\Bin\ при старте программы находил DLL (DLL1.dll) в папке C:\Work\Program1\ ? . Из условия видно, что папка C:\Work\Program1\ не является подпапкой папки C:\Work\Program2\Bin\ ? . Жду Ваших ответов. . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 12:29 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг ХупинНе верится, что нет решения ч Выше писал как у нас, не работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 12:51 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Jenyok2, Ты с расчётом на windows installer смотри. Т.е. юзверь инсталлятором ставит либо расшаренную длл на несколько программ, либо только для одной. Если для одной, то рядом с exe и кидай. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 12:56 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Petro123Jenyok2, Ты с расчётом на windows installer смотри. Т.е. юзверь инсталлятором ставит либо расшаренную длл на несколько программ, либо только для одной. Если для одной, то рядом с exe и кидай. . Условия задачи совсем другие. Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . . Хотелось бы увидеть пример кода. . Жду Ваших ответов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 13:07 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Jenyok2Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . А то что можно забыть про абсолютный прибитый гвоздями путь ничего? Студия АВТОМАТИЧЕСКИ копирует длл при подготовке релиза рядом с exe. Обновлять setup.exe а не руками. Ну, или в приложении вбивай путь гвоздями. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 13:30 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Jenyok2, - узнать путь exe - на ранг выше папку - добавляем program2/bin - копируем к себе или грузим длл в динамике. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 13:33 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Jenyok2Petro123Jenyok2, Ты с расчётом на windows installer смотри. Т.е. юзверь инсталлятором ставит либо расшаренную длл на несколько программ, либо только для одной. Если для одной, то рядом с exe и кидай. . Условия задачи совсем другие. Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . . Хотелось бы увидеть пример кода. . Жду Ваших ответов. 1. Если Вы будете копировать автоматически при старте или при обновлении, Вы НЕ забудете. (слово "забыть" мне не понятно применительно к программному продукту) 2. Грузите в рантайме, конфиги хоть в базе храните. 3. Ну, есть и извращения, когда в код компилятся левые пути, да еще и абсолютные. Тут большой простор для творчества, хотя желательно не оставлять его в релизах. Код Вам пусть пишут другие, сорри. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 14:10 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Можно наверное еще в каталоге/подкаталоге приложения сделать hard link на нужную assembly. Jenyok2Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . В таком режиме - грузить в коде Assembly в свой appDomain,потом выгружать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 14:37 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
абсолютные пути в программе это зло и недопустимо. Лучше использовать: 1.Переменные окружения 2. в .NET многие пути можно получить из кода, временную папку, рабочий стол, программные файлы, appdata и прочее, прочее прочее. Path.GetTempPath(); и другие 3. Текущий каталог: Environment.CurrentDirectory (вроде так) Папку от куда запущена текущая сборка ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 14:45 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Arm79Можно наверное еще в каталоге/подкаталоге приложения сделать hard link на нужную assembly. Jenyok2Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . В таком режиме - грузить в коде Assembly в свой appDomain,потом выгружать Как выгрузить ассембли из аппдомена? зы. You can not unload an assembly from an appdomain. You can destroy appdomains, but once an assembly is loaded into an appdomain, it's there for the life of the appdomain. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 18:48 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Jenyok2Petro123Jenyok2, Ты с расчётом на windows installer смотри. Т.е. юзверь инсталлятором ставит либо расшаренную длл на несколько программ, либо только для одной. Если для одной, то рядом с exe и кидай. . Условия задачи совсем другие. Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . . Хотелось бы увидеть пример кода. . Жду Ваших ответов. Напишите минимальное приложение, а лучше - сервис, в котором будет файл watcher, следящий за исходным фолдером, и если там обновится длл, он 1. пишет вам в почту сообщение 2. копирует длл в нужное место 3. по всей сети отправляет месседжи об обновлении длл 4. не дает работать на этом компьютере, навязчиво напоминая, мол, не забывай ... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 18:57 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг ХупинJenyok2пропущено... . Условия задачи совсем другие. Смысл такой, что в папке C:\Work\Program1\ находится сторонняя программа с DLL1.dll, которая периодически обновляется, в том числе обновляется файл DLL1.dll . Т.е. при каждом обновлении сторонней программы в паке C:\Work\Program1\ необходимо НЕ забывать обновить (скопировать) DLL1.dll в папку C:\Work\Program2\Bin\ с программой A1.exe . Это НЕ всегда выполнимо, можно забыть про обновление DLL1.dll в папке C:\Work\Program2\Bin\ . Поэтому и вопрос как загрузить DLL1.dll из папки C:\Work\Program1\ программой A1.exe запущенной из папки C:\Work\Program2\Bin\ . . Хотелось бы увидеть пример кода. . Жду Ваших ответов. Напишите минимальное приложение, а лучше - сервис, в котором будет файл watcher, следящий за исходным фолдером, и если там обновится длл, он 1. пишет вам в почту сообщение 2. копирует длл в нужное место 3. по всей сети отправляет месседжи об обновлении длл 4. не дает работать на этом компьютере, навязчиво напоминая, мол, не забывай ... . Лишнее все это... Писать лишнюю программу, забивать почту спамом, копировать файлы. . Уже есть готовая программа, которую надо подправить. Задача простая, загрузить DLL из другой директории. Возможно или нет ? . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 19:14 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг ХупинНапишите минимальное приложение, а лучше - сервис, в котором будет файл watcher, следящий за исходным фолдером, и если там обновится длл, он 1. пишет вам в почту сообщение 2. копирует длл в нужное место 3. по всей сети отправляет месседжи об обновлении длл 4. не дает работать на этом компьютере, навязчиво напоминая, мол, не забывай ... выгрузить сборки из домена невозможно. точка. можно создать другой AppDomain, загрузить сборки туда. Но это накладывает определенные ограничения на передачу данных между доменами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2017, 20:34 |
|
Как сказать приложению, где искать ассембли?
|
|||
---|---|---|---|
#18+
Ролг ХупинСон Веры Павловныпропущено... Ну конфиг у этого приложения имеется? Если да - откорректируйте его вручную, и вручную создайте папки/скопируйте файлы. Если нет - тогда ой. да, выше я описал, что сделал http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1278038&msg=20978682 Не верится, что нет решения через конфиг. Берите fusion log viewer, ищите попытку загрузки вашей библиотеки, смотрите, почему не загрузилась. Есть подозрение, что в локальную папку выложена библиотека не той версии, либо эта библиотека тянет за собой какие-то зависимости, которых нет в локальной папке. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2017, 04:18 |
|
|
start [/forum/topic.php?fid=20&fpage=36&tid=1399591]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 142ms |
0 / 0 |