У меня есть dll
в C:\Windows\Microsoft.NET\assembly\GAC_32\MyFolder\
, который я хочу использовать в моем проекте C#
.
Я попытался добавить ссылку (ссылки-> Добавить ссылку-> Обзор) на нее, и это кажется прекрасным, но во время выполнения программа измельчается с помощью AccessViolationException
.
Я не был уверен, была ли эта проблема проблемой, поэтому я решил изучить ее, и я нашел ответ в этом post, говоря, что вы не можете ссылаться на сборку с GAC
таким образом. То, что я не нашел, - как это сделать.
Когда я удаляю ссылку на dll
, программа не компилируется, конечно.Как использовать сборку с ПКК?
ответ
Перед началом работы с сборками GAC есть некоторые вещи.
1) Сборка в GAC должна быть strong-named.
2) Вы не можете просто скопировать туда файл, here, как правильно установить сборку в GAC.
3) A strong-named assembly can only use types from other strong-named assemblies.
4) Here «S, как ссылаться на сильное имя узла во время компиляции (с помощью опции компилятора) и времени выполнения и here» S, как ссылаться на сборку GAC из Visual Studio , Читайте также ответ от Hans Passant в разделе this темы.
Возможный дубликат: 'Referencing DLL from GAC in Visual Studio'. Особенно обратите внимание на this answer, что объясняет, почему добавление ссылки из GAC является плохой практикой. Однако вы все равно можете это сделать, используя полный путь на вашем компьютере. Рассмотрим следующий сценарий:
- ваша ссылка является длл третья сторона
- Вы полагаетесь на то, что машины развертывается уже есть, что длл зарегистрировано
Разрешение:
- Копирование сторонних сборок зависит от выбранной вами папки.
- Используйте эти ссылки только для целей компиляции. Вы не отправляете эти предметы.
- После установки эти ссылки будут разрешены с помощью GAC на этой машине. Если нет, вам необходимо установить эти сборки в GAC.
Этот сценарий используется теми, кто создает пользовательские приложения для SharePoint (например).
, пожалуйста, добавьте свой код, почти невозможно помочь сосать вопрос только из ниоткуда –
Зачем вам нужен код? Я задаю технический вопрос. У меня есть 'dll' в' GAC', как его использовать? Я не ожидаю, что люди поймут, почему я получаю исключение, просто скажите мне, ссылаюсь ли я на 'dll', как должно. – GM6
@ GM6 - как вы добавили его в GAC? Вы использовали GacUtil? Какие именно параметры команды вы использовали? Когда вы говорите «во время выполнения», вы имеете в виду в VS.net IDE или при выполнении на другой машине? Как вы знаете, что DLL правильно зарегистрирована в GAC? Вы использовали GacUtil для отображения содержимого GAC на целевой машине? – PhillipH