Как зарегистрировать сборку без строгого имени для загрузки, как если бы она была в GAC? - PullRequest
7 голосов
/ 18 февраля 2010

Один из наших партнеров предоставил нам сборку, к которой нам нужно получить доступ из нашего приложения. К сожалению, это не строгое имя, поэтому мы не можем установить его в GAC. И мы не можем поместить его в то же место, что и наш исполняемый файл.

Есть ли решение для этого?

РЕДАКТИРОВАТЬ: Это будет временное решение только для тестирования, когда они перейдут RC, у нас будет сборка со строгим именем.

Ответы [ 4 ]

5 голосов
/ 18 февраля 2010

На данный момент у вас есть несколько вариантов.

Первый - это поместить сборку в каталог с именем сборки (без расширения), который является подкаталогом каталога приложения .

Второй - указать подкаталог, который вы хотите, чтобы CLR проверял на наличие ссылок в файле app.config, используя пробный элемент .

Наконец, вы можете загружать сборку динамически, используя различные методы загрузки в классе сборки , но я бы сказал, что это очень плохая идея в этом случае, если у вас сборка, и у вас есть конкретные типы, которые вы хотите использовать в нем. Такая поздняя загрузка сборки обычно используется, когда вы хотите заменить реализацию некоторых абстракций, чего здесь не происходит.

4 голосов
/ 02 января 2014

Обходной путь с использованием декомпиляции и подписи (с помощью командной строки разработчика для Visual studio):

ildasm.exe /all /typelist /out=DataSystem.il DataSystem.dll
ilasm.exe /dll /optimize /key=DataSystem.snk DataSystem.il

DataSystem.snk может быть сгенерирован как файл с помощью Visual Studio IDE http://www.bloggedbychris.com/2011/09/29/signing-a-net-assembly-in-visual-studio/

тогда вы сможете запустить

gacutil.exe -i DataSystem.dll
1 голос
/ 18 февраля 2010

Еще одно решение - добавить в файл machine.config следующее:

<runtime>
  <developmentMode developerInstallation="true"/>  
</runtime>

И добавить DEVPATH = путь к системным переменным среды.

0 голосов
/ 04 марта 2019

Лучшее и наиболее простое решение для подписи и регистрации сборки, которую я нашел, было здесь: http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html

Для того, чтобы это работало легко, я записал CD в какой-то каталог, например C: \ temp - мне показалось, что это работает намного лучше, возможно, из-за того, что права доступа к файлам более доступны где-то в этом роде.

...