Làm cách nào để đăng ký tệp .NET DLL trong GAC?


83

Tôi đã tạo một .DLLtệp .NET , mà tôi muốn đăng ký trong GAC .

Tôi đã sử dụng lệnh này trong Windows Server 2003 Command Prompt:

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

Nó nói rằng con đường không đúng.

Tôi có cần sử dụng điều này trong lời nhắc cmd .NET không? Nếu đúng như vậy, tôi không thể tìm thấy lời nhắc cmd .NET.


Thông báo lỗi chính xác là gì? Nó đề cập đến đường dẫn đến gacutil.exehoặc làm gì dllname.dll?
UuDdLrLrSs 10/1218

Câu trả lời:


101

Bạn có thể làm điều đó bằng cách sử dụng gacutilcông cụ. Ở dạng đơn giản nhất của nó:

gacutil /i yourdll.dll

Bạn tìm thấy Dấu nhắc lệnh Visual Studio trong menu bắt đầu trong Chương trình -> Visual Studio -> Công cụ Visual Studio .


7
Nếu bạn không có Visual Studio, bạn có thể truy cập gacutil.exe trong C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ Ít nhất đó là nơi nó tồn tại trên máy chủ Win2012R2 .
sonyisda1

Tôi có các hàm yêu cầu độ cao, vì vậy việc đặt dll đó vào assembly sẽ có đặc quyền không? Liệu người dùng không phải quản trị viên có thể chạy các chức năng đó trong độ cao không?
Susarla Nikhilesh

Máy của tôi có nó trong C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools - nó cũng yêu cầu tôi chạy lệnh thông qua dòng lệnh nâng cao.
neminem

35

Có thể bạn sẽ cần:

  • Đặt tên mạnh cho hội đồng của bạn (Visual Studio, Thuộc tính dự án, tab Ký, Ký hợp đồng)
  • Thay đổi sự kiện xây dựng của bạn (Thuộc tính dự án, tab Sự kiện tạo, dòng lệnh sau khi xây dựng)
   cd C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (TargetPath)" / f / nologo
   gacutil / l "$ (TargetName)" / nologo

Bây giờ, mỗi khi bạn xây dựng dự án của mình, nó sẽ được cài đặt trên GAC.


Trong Visual Studio 2017, bạn phải chạy VS với tư cách quản trị viên hoặc gacutil bị lỗi do thiếu quyền.
Nathan

19

Chỉ cần kéo và thả tệp DLL vào thư mục C:\Windows\assemblybằng Windows Explorer.

Cảnh báo:

Trong các phiên bản cũ hơn của .NET Framework, phần mở rộng trình bao Windows Shfusion.dll cho phép bạn cài đặt các hội đồng bằng cách kéo chúng vào File Explorer. Bắt đầu với .NET Framework 4, Shfusion.dll đã lỗi thời.

Nguồn: Cách thực hiện: Cài đặt một lắp ráp vào bộ đệm ẩn lắp ráp chung


2
Bạn cần phải đăng nhập bằng tài khoản quản trị vì "Run As" không khả dụng để kéo-n-thả.
Salman Siddiqui

6
Điều này không ảnh hưởng đến mục tiêu của tôi - thư viện không được thêm vào, không có thông báo lỗi. Tôi đang sử dụng một tài khoản quản trị.

8
"Trong các phiên bản cũ hơn của .NET Framework, phần mở rộng trình bao Windows Shfusion.dll cho phép bạn cài đặt các hội đồng bằng cách kéo chúng trong File Explorer. Bắt đầu với .NET Framework 4, Shfusion.dll đã lỗi thời." msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge

Nhấn mạnh vào "kéo và thả" - sao chép và dán không hoạt động
Todd

13

Nhân tiện, những phản hồi này không cho bạn biết rằng gacutil nằm trong C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *.

Tôi không có nó trong thư mục v2.0 của mình. Nhưng tôi đã thử kéo và thả DLL vào thư mục C: \ WINDOWS \ Assembly như đã được đề xuất ở đây trước đó, điều đó dễ dàng hơn và hoạt động hiệu quả, miễn là đó là thư viện .NET. Tôi cũng đã thử một thư viện COM và điều này không thành công với lỗi nó đang mong đợi một tệp kê khai hợp ngữ. Tôi biết đó không phải là câu hỏi ở đây, nhưng nghĩ rằng tôi sẽ đề cập đến điều đó trong trường hợp ai đó phát hiện ra họ không thể thêm nó, đó có thể là lý do tại sao.

-Tom


1
Những phản hồi này không cho bạn biết rằng gacutilnó không đi kèm với Windows.
Ian Boyd

13

Từ Wikipedia :

gacutil.exe là tiện ích .NET được sử dụng để làm việc với GAC .

Người ta có thể kiểm tra tính khả dụng của một assembly chia sẻ trong GAC bằng cách sử dụng lệnh:

gacutil.exe /l "assemblyName"

Người ta có thể đăng ký một assembly chia sẻ trong GAC bằng cách sử dụng lệnh:

gacutil.exe /i "assemblyName"

Hoặc bằng cách thả tệp lắp ráp vào vị trí sau bằng GUI:

%windir%\assembly\

Các tùy chọn khác cho tiện ích này sẽ được mô tả ngắn gọn nếu bạn sử dụng /?cờ, đó là:

gacutil.exe /?

GacUtil không đi kèm với .NET. Trình trợ giúp thả và thả trình bao đã sử dụng để cho phép kéo và thả để đăng ký các tập hợp không còn hoạt động.
Ian Boyd

5

Hãy thử GACView nếu bạn sợ lệnh nhắc.

Bạn chưa đặt PATH đúng cách trong DOS. Bạn cần chỉ đường dẫn đến nơi chứa gacutil để sử dụng nó trong DOS.


4
  • Chạy dấu nhắc lệnh dành cho nhà phát triển cho V2012 hoặc bất kỳ phiên bản nào được cài đặt trong hệ thống của bạn

  • gacutil / i diseasefDll

  • Đi vào

Làm xong!!!


đề cập đến dấu nhắc lệnh 'Nhà phát triển', tốt! vì gacutil không khả dụng để tạo dấu nhắc lệnh
Muds

3

Như Ando đã nói, chỉ cần kéo và thả assembly vào thư mục C: \ windows \ assembly. Nó hoạt động.


Nhấn mạnh vào "kéo và thả" - sao chép và dán không hoạt động
Todd

1
Kéo và thả không còn hoạt động. Trình xử lý Shell Fusion từ lâu đã không còn được dùng nữa.
Ian Boyd

1

Các giải pháp trên trông thật tuyệt vời. Tuy nhiên, để đơn giản, tôi đoán tất cả những gì bạn cần là nhập tên assembly cùng với đường dẫn đầy đủ của nó như:

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

Chú ý đến C: \ MyDlls \ GacDeployedAssemblies


1

Trong trường hợp trên windows 7 gacutil.exe (để đặt assembly trong GAC) và sn.exe (Để đảm bảo tính duy nhất của assembly) nằm tại C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin

Sau đó đi đến đường dẫn của gacutil như hình dưới đây, thực hiện lệnh dưới đây sau khi thay thế đường dẫn của assembly của bạn

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ bin> gacutil / i "thay thế bằng đường dẫn lắp ráp của bạn sẽ được đưa vào GAC"


0

Từ Publishtab đi đến application Files.

Sau đó, nhấp vào unnecessary files.

Sau đó, thực hiện nhấn loại trừ ok.

Cuối cùng, xây dựng các tệp dự án và chạy các dự án.


0

Tôi đã thử mọi thứ trong các bình luận và nó không hoạt động. Tôi cũng vậygacutil /i "path to my dll" từ Powershell và nó đã hoạt động.

Ngoài ra, hãy nhớ thủ thuật nhấn Shift khi bạn nhấp chuột phải vào tệp trong Windows Explorer để có tùy chọn Sao chép đường dẫn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.