2010-02-18 4 views
4

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

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

EDIT: Это будет временное решение только для тестирования, когда они пройдут RC, у нас будет сильная команда.

+0

Из любопытства, почему вы не можете разместить его на том же месте, что и ваш исполняемый файл? –

+0

Нет доступа к источнику, который я предполагаю? – mxmissile

+0

Мне тоже интересно, почему его нельзя поместить в тот же каталог. Есть ли проблема с версией какого-то типа, где это то же имя, что и другая библиотека, которую вы должны использовать? –

ответ

5

У вас есть несколько вариантов в этом пункте.

Первый - разместить сборку в каталоге с name of the assembly (without the extension) which is a subdirectory of the application directory.

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

Наконец, вы можете загрузить сборку динамически, используя различные Load methods on the Assembly class, но я бы сказал, что это очень плохая идея в этом случае, учитывая, что у вас есть собрание, и у вас есть конкретные типы, которые вы хотите использовать в нем , Установка сборок в конце времени, как это, обычно используется, когда вы хотите подписать реализацию определенных абстракций, что, похоже, не здесь.

0

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

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

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

3

Обход с помощью декомпиляции & подписания (с помощью Developer командной строки для 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