Як зареєструвати файл .NET DLL у GAC?


83

Я створив .DLLфайл .NET , який хочу зареєструвати в GAC .

Я використовував цю команду в командному рядку Windows Server 2003 :

C:\"Path of dll"\>gacutil /i dllname.dll
'gacutil' is not recognized as an internal or external command,
operable program or batch file.

Там сказано, що шлях неправильний.

Чи потрібно мені використовувати це у підказці .NET cmd? Якщо це так, я не можу знайти підказку .NET cmd.


Яке саме було повідомлення про помилку? Це посилається на шлях до gacutil.exeчи робити dllname.dll?
UuDdLrLrSs

Відповіді:


101

Ви можете зробити це за допомогою gacutilінструменту. У найпростішому вигляді:

gacutil /i yourdll.dll

Ви знайдете командний рядок Visual Studio у меню «Пуск» у розділі Програми -> Visual Studio -> Інструменти Visual Studio .


7
Якщо у вас немає Visual Studio, ви можете отримати доступ до gacutil.exe у папці C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ Принаймні саме там він існує на сервері Win2012R2 .
sonyisda1,

У мене є функції, які вимагають підвищення, тож розміщення цього dll у збірці матиме привілеї? Чи зможе користувач, що не є адміністратором, запускати ці функції на висоті?
Сусарла Нікхілеш

На моїй машині це було під C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Інструменти - також потрібно, щоб я запускав команду через підвищений командний рядок.
neminem

35

Вам знадобиться:

  • Сильна назва вашої збірки (Visual Studio, Властивості проекту, Вкладка підписання, Підписання збірки)
  • Змініть свої події збірки (властивості проекту, вкладка Події збірки, командний рядок після збірки)
   cd C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (TargetPath)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

Тепер кожного разу, коли ви будуєте свій проект, він буде встановлений на GAC.


У Visual Studio 2017 вам потрібно запустити VS як адміністратор, або gacutil виходить з ладу через відсутність дозволу.
Натан,

19

Просто перетягніть файл DLL у папку C:\Windows\assemblyза допомогою Провідника Windows.

Застереження:

У попередніх версіях .NET Framework розширення оболонки Windows Shfusion.dll дозволяє встановлювати збірки, перетягуючи їх у Провідник файлів. Починаючи з .NET Framework 4, Shfusion.dll застарів.

Джерело: Як: Встановити збірку в загальний кеш збірки


2
Вам потрібно було б увійти в систему з обліковим записом адміністратора, оскільки "Запустити як" недоступне для перетягування.
Salman Siddiqui

6
Це не впливає на мій кінець - бібліотека не додана, повідомлення про помилку немає. Я використовую обліковий запис адміністратора.

8
"У попередніх версіях .NET Framework розширення оболонки Windows Shfusion.dll дозволяло встановлювати збірки, перетягуючи їх у Провідник файлів. Починаючи з .NET Framework 4, Shfusion.dll застарів." msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge

Акцент на "перетягуванні" - копіювання та вставлення не працює
Тодд

13

Ці відповіді не кажуть вам, що gacutil, до речі, знаходиться в C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *.

У мене його не було в моїй папці v2.0. Але я спробував перетягнути і скинути DLL в папку C: \ WINDOWS \ Assembly, як було запропоновано тут раніше, і це було простіше і працює, якщо це бібліотека .NET. Я також спробував бібліотеку COM, і це не вдалося з помилкою, що вона очікувала маніфесту збірки. Я знаю, що тут не йшлося про це, але думав, що згадаю, що, якщо хтось дізнається, що не може його додати, ось чому.

-Том


1
Ці відповіді не говорять вам, що gacutilне поставляється з Windows.
Ян Бойд

13

З Вікіпедії :

gacutil.exe - утиліта .NET, яка використовується для роботи з GAC .

Перевірити наявність спільної збірки в GAC можна за допомогою команди:

gacutil.exe /l "assemblyName"

Можна зареєструвати спільну збірку в GAC , використовуючи команду:

gacutil.exe /i "assemblyName"

Або перекинувши файл збірки в таке розташування за допомогою графічного інтерфейсу користувача:

%windir%\assembly\

Інші варіанти цієї утиліти будуть коротко описані, якщо ви використовуєте /?прапор, тобто:

gacutil.exe /?

GacUtil не постачається з .NET. Допоміжний додаток оболонки, який дозволяв перетягувати та реєструвати збірки, більше не працює.
Ян Бойд,

5

Спробуйте GACView, якщо у вас є страх перед командними підказками.

Ви неправильно встановили PATH у DOS. Вам потрібно вказати шлях туди, де знаходиться gacutil, щоб використовувати його в DOS.


4
  • Запустіть командний рядок розробника для V2012 або будь-яку інстальовану у вашій системі версію

  • gacutil / i patofDll

  • Введіть

Готово !!!


згадавши командний рядок "Розробник", добре! оскільки gacutil недоступний для побудови командного рядка
Грязі

3

Як сказав ando, просто перетягніть збірку в папку C: \ windows \. Це працює.


Акцент на "перетягуванні" - копіювання та вставлення не працює
Тодд

1
Перетягування більше не працює. Обробник Shell Fusion давно застарів.
Ян Бойд,

1

Вищезазначені рішення виглядають чудовими. Проте, щоб бути простим, все, що вам потрібно, це ввести назву збірки разом з повним шляхом, як:

gacutil -i C:\MyDlls\GacDeployedAssemblies\dllname.dll

Зверніть увагу на C: \ MyDlls \ GacDeployedAssemblies


1

Якщо у Windows 7 gacutil.exe (для складання збірки у GAC) та sn.exe (для забезпечення унікальності збірки) знаходиться у папці C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ bin

Потім перейдіть до шляху gacutil, як показано нижче, виконайте наведену нижче команду після заміни шляху до вашої збірки

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "замінити шляхом до вашої збірки, яка буде розміщена в GAC"


0

З Publishвкладки перейдіть до application Files.

Потім натисніть unnecessary files.

Після цього зробіть прес виключення ok.

Нарешті, створіть файли проекту та запустіть проекти.


0

Я спробував майже все в коментарях, і це не спрацювало. Так я зробив gacutil /i "path to my dll"із Powershell, і це спрацювало.

Також пам’ятайте фокус натискання клавіші Shift, коли ви клацаєте правою кнопкою миші на файлі в Провіднику Windows, щоб отримати можливість копіювання шляху.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.