Рейтинг:
32
Sergey Alexandrovich Kryukov
Очень полезная ссылка-моя 5.
Я предоставил, вероятно, самый простой метод работы, пожалуйста, смотрите.
--СА
Asif Huddani
Привет, Абхинав, хорошая статья, но мой вопрос еще более сложен..
у меня есть 10 проектов, и каждый использует один и тот же infragistics ddl, который имеет около 100 МБ.
если мне нужно развернуть в одном месте, то как все проекты это знают, потому что это изменение предназначено только для machine.config для конкретного фреймворка.
и если я удалю все dll из своего проекта, то он захочет разрешить мне публикацию.
я меняю свойство каждой библиотеки dll на CopyLocal flase. а затем измените файл machine. config и укажите путь.. Когда я публикую работу правильно, но в системе anohter тот же путь в machine.config, но когда я пытаюсь установить свое приложение, то он выдает ошибку, что файл не найден в GAC... любое решение????
Рейтинг:
25
Sergey Alexandrovich Kryukov
Да, вы можете сделать это без GAC, и вам даже не нужно иметь абсолютное имя папки для ваших библиотек.
Все, что вам нужно сделать, это убедиться, что каждое приложение указывает путь к библиотеке относительно пути к исполняемому файлу. Например, если у вас есть несколько приложений с такими именами *.exe
Затем для каждого из них вам понадобится файл с именем *.exe.config
выглядит вот так:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath=".\MySharedLibraries"/>
</assemblyBinding>
</runtime>
</configuration>
В принципе, используя этот метод, вы можете выбрать различные структуры каталогов, чтобы совместно использовать некоторые сборки несколькими приложениями.
—СА
Abhinav S
Это выглядит вполне нормально. 5.
Мой вопрос, однако, будет ли он работать для другого приложения, указывающего на те же общие сборки?
Sergey Alexandrovich Kryukov
Спасибо, Абхинав.
Да, конечно, это сработает. В этом весь смысл.
Я ответил, Потому что именно так я использую свои приложения.
Видите ли, во многих аспектах .NET немного меняет курс; он уходит от установок и помогает уменьшить помощь DLL; и мне очень нравится эта тенденция. (Приложение должно запускаться независимо от того, куда вы помещаете файлы; какой-то шаг установки может произойти во время первого запуска; реестр не должен быть загрязнен. *. Exe. config - это один из простых способов разрешения зависимостей.)
--СА
Espen Harlinn
5 + Хороший ответ, хорошо знать
Asif Huddani
Привет,
зондирование - это только поиск внутри каталога bin или каталога приложений.
У меня есть 10 приложений, которые я публикую как click once в .net, поэтому они устанавливаются в "C:\Users\ahuddani\AppData\Local\Apps\2.0\J99BQE5J.KV1\6JX14ZMC.NLY" местоположение, а затем глобальный путь, я думаю, что это сложно и невозможно. я хочу использовать общий путь C:\asif\assembly но не GAC.
Sergey Alexandrovich Kryukov
Что значит "только"? - неправда.
Все каталоги равны - будут работать так, как я говорю.
Кстати, почему вы устанавливаете свое приложение в разделе "Пользователи"? Как бы то ни было, это зависит от тебя. Я дал вам решение без КАГ, прочтите его. Он будет работать с абсолютным путем (не очень хорошим, я бы сказал), относительным путем, любой комбинацией. Что такое "невозможно"? Я говорю-возможно.
--СА
fatlander
зондирование позволяет ссылаться только на подкаталоги внутри пути базового приложения.
так что нет, ваше решение не работает, и ваш ответ бесполезен
Sergey Alexandrovich Kryukov
Это кто вам так сказал? Это может быть где угодно. Итак, это не решение не работает, это ваше понимание здесь не работает.
—СА
d0s'A
фатландер прав. Вы можете указать относительный путь, но требуется указать только подпапку. См. msdn для получения дополнительной информации!
Sergey Alexandrovich Kryukov
Похоже, вы правы, большое вам спасибо; я исправлю образец кода.
Во всяком случае, цель его состоит в том, чтобы совместно использовать какой-то каталог со сборками несколькими приложениями; что вполне возможно. Как это может сделать мой подход "бесполезным"?
—СА