GAC에서 .NET DLL 파일을 어떻게 등록합니까?


83

GAC.DLL 에 등록하고 싶은 .NET 파일 을 만들었습니다 .

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

답변:


102

gacutil도구 를 사용하여 수행 할 수 있습니다 . 가장 간단한 형태 :

gacutil /i yourdll.dll

프로그램 -> Visual Studio- > Visual Studio 도구 의 시작 메뉴에서 Visual Studio 명령 프롬프트를 찾을 수 있습니다.


7
Visual Studio가없는 경우 C : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \에서 gacutil.exe에 액세스 할 수 있습니다. 최소한 Win2012R2 서버에있는 위치입니다. .
sonyisda1

권한 상승이 필요한 기능이 있으므로 어셈블리에 dll을 배치하면 권한이 있습니까? 관리자가 아닌 사용자가 Elevation에서 이러한 기능을 실행할 수 있습니까?
Susarla Nikhilesh

내 컴퓨터는 C : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Tools 아래에 있습니다. 또한 상승 된 명령 줄을 통해 명령을 실행해야했습니다.
neminem

35

너는 필요할거야:

  • 강력한 어셈블리 이름 지정 (Visual Studio, 프로젝트 속성, 서명 탭, 어셈블리 서명)
  • 빌드 이벤트 변경 (프로젝트 속성, 빌드 이벤트 탭, 빌드 후 명령 줄)
   cd C : \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin
   gacutil.exe / i "$ (대상 경로)"/ f / nologo
   gacutil / l "$ (대상 이름)"/ nologo

이제 프로젝트를 빌드 할 때마다 GAC에 설치됩니다.


Visual Studio 2017에서 VS를 관리자로 실행해야합니다. 그렇지 않으면 권한이 없어 gacutil이 실패합니다.
Nathan

19

C:\Windows\assemblyWindows 탐색기를 사용하여 DLL 파일을 폴더로 끌어서 놓기 만하면 됩니다.

경고:

이전 버전의 .NET Framework에서 Shfusion.dll Windows 셸 확장을 사용하면 어셈블리를 파일 탐색기로 끌어서 설치할 수 있습니다. .NET Framework 4부터 Shfusion.dll은 더 이상 사용되지 않습니다.

원본 : 방법 : 전역 어셈블리 캐시에 어셈블리 설치


2
끌어서 놓기에 "다음 계정으로 실행"을 사용할 수 없으므로 관리자 계정으로 로그인해야합니다.
Salman Siddiqui 2014

6
이것은 내쪽에 영향을 미치지 않습니다. 라이브러리가 추가되지 않았고 오류 메시지도 없습니다. 관리자 계정을 사용하고 있습니다.

8
"이전 버전의 .NET Framework에서는 Shfusion.dll Windows 셸 확장을 사용하여 어셈블리를 파일 탐색기에서 끌어서 설치할 수있었습니다. .NET Framework 4부터 Shfusion.dll은 더 이상 사용되지 않습니다." msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge

"드래그 앤 드롭"에 중점 - 복사 및 붙여 넣기가 작동하지 않습니다
토드

14

Wikipedia에서 :

gacutil.exeGAC 작업에 사용되는 .NET 유틸리티 입니다.

다음 명령을 사용하여 GAC 에서 공유 어셈블리의 가용성을 확인할 수 있습니다 .

gacutil.exe /l "assemblyName"

다음 명령을 사용하여 GAC 에 공유 어셈블리를 등록 할 수 있습니다 .

gacutil.exe /i "assemblyName"

또는 GUI를 사용하여 어셈블리 파일을 다음 위치에 드롭합니다.

%windir%\assembly\

이 유틸리티의 다른 옵션은 다음과 같이 /?플래그 를 사용하는 경우 간략하게 설명됩니다 .

gacutil.exe /?

GacUtil은 .NET과 함께 제공되지 않습니다. 끌어서 놓기를 사용하여 어셈블리를 등록하는 데 사용되었던 셸 놓기 및 놓기 도우미가 더 이상 작동하지 않습니다.
Ian Boyd

13

이러한 응답은 gacutil이 C : \ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *에 있다는 것을 알려주지 않습니다.

내 v2.0 폴더에 없었습니다. 하지만 앞서 제안한대로 DLL을 C : \ WINDOWS \ Assembly 폴더로 끌어다 놓으려고 시도했으며 .NET 라이브러리 인 한 더 쉽고 작동합니다. 또한 COM 라이브러리를 시도했지만 어셈블리 매니페스트를 예상하고 있다는 오류로 실패했습니다. 나는 그것이 여기서 질문이 아니라는 것을 알고 있지만 누군가가 그것을 추가 할 수 없다는 것을 알게되면 그 이유가 될 수 있다고 언급 할 것이라고 생각했습니다.

-톰


1
이러한 응답은 gacutilWindows와 함께 제공되지 않는다는 것을 알려주지 않습니다.
Ian Boyd

5

명령 프롬프트가 두렵다GACView를 사용해보십시오 .

DOS에서 PATH를 올바르게 설정하지 않았습니다. DOS에서 사용하려면 gacutil이있는 경로를 지정해야합니다.


4
  • V2012 또는 시스템에 설치된 모든 버전 용 개발자 명령 프롬프트 실행

  • gacutil / i pathofDll

  • 시작하다

끝난!!!


'개발자'명령 프롬프트를 언급합니다. gacutil을 사용하여 명령 프롬프트를 빌드 할 수 없음
Muds

3

ando가 말했듯이 어셈블리를 C : \ windows \ assembly 폴더로 끌어다 놓습니다. 효과가있다.


"드래그 앤 드롭"에 중점 - 복사 및 붙여 넣기가 작동하지 않습니다
토드

1
드래그 앤 드롭이 더 이상 작동하지 않습니다. Shell Fusion 핸들러는 오랫동안 사용되지 않습니다.
Ian Boyd

1

위의 솔루션은 놀랍습니다. 그러나 간단하게 말하면 다음과 같이 전체 경로와 함께 어셈블리 이름을 입력하면됩니다.

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

에주의를 지불 C : \ MyDlls \ GacDeployedAssemblies


1

Windows 7의 경우 gacutil.exe (어셈블리를 GAC에 배치) 및 sn.exe (어셈블리의 고유성을 보장하기 위해)는 C : \ Program Files (x86) \ Microsoft SDKs \ 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에서했고 작동했습니다.

또한 Windows 탐색기에서 파일을 마우스 오른쪽 버튼으로 클릭하여 경로 복사 옵션을 가져올 때 Shift 키를 누르는 트릭을 기억하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.