2012-03-27 2 views
9

그래서, 승리를 2008 R2 표준의 64에, 나는 6 (여섯)하여 gacutil.exe가 모두 다른에, (VS 폴더에있는 것들은 제외) :어떤 gacutil.exe를 사용해야합니까?

  1. C : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \ 빈
  2. C : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v6.0A \ 빈 \ 64
  3. C : \의 Program Files (x86) \ 마이크로 소프트의 SDK \ WINDOWS \ V7 .0A \ Bin
  4. c : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64
  5. C : \ 프로그램 파일 마이크로 소프트의 SDK \ WINDOWS \ v7.0A \ 빈 \으로 netfx \ (86) 4.0 도구
  6. C : \ 프로그램 파일 마이크로 소프트의 SDK \ WINDOWS \ v7.0A \ 빈 \ (86) \으로 netfx 4.0 도구 \ 64

질문 있습니다

  1. x64 버전의 행동에 어떤 차이가 있습니까?
  2. v7.0A 버전을 선호합니까? v6.0A?
  3. .NET 4.0 어셈블리에는 NETFX 4.0 Tools 버전을 사용해야하고 나머지에는 "표준"버전을 사용해야합니까?

또는 주제에 대한 일반적인 유형의 기사가 있으면 감사하게 생각합니다. Hans Passant's answer에 관한

업데이트 1 :

  1. gacutil.exe는 이제 사용되지는 "빌드, 배포 및 구성 도구 (.NET 프레임 워크)"의 .NET 프레임 워크 도구 부분입니다 (!) shfusion.dll은;
  2. 실제로 v6.0A는 VS2008 설치에서 나온 것이며 무시할 수 있습니다 (1, 2);
  3. 64 비트 설명 이론도 합리적으로 들립니다. 나는 또한 IA64 version of gacutil.exe이 아마도 있다고 가정하기 때문에 "각 플랫폼의 도구 복사본"과 같아서 WoW64 때문에 x86 버전이 모든 곳에서 잘 돌아갈 수 있습니다. 마이너스 2의 gacutil 버전 (4, 6);
  4. 사용할 버전에 대한 부분이 잘못되었습니다. V4.0 gacutil.exe는 대상 CLR에 따라 어셈블리를 감지하고 배치하며 .NET 4.0 및 이전 버전 어셈블리에서 모두 잘 작동합니다. 따라서 질문은 왜 V2.0 gacutil.exe를 떠나야 하는가입니다. 내 생각 엔 .NET4.0을 사용할 수없는 환경에서의 배포 목적으로 사용하는 것입니다.
  5. GAC를 사용하거나 사용하지 않으려면 문제가되지 않았습니다. 그래서 나는 마지막 단락을 주석없이 남겨 둡니다. 하나는 안전하게 윈도우 x86 및 x64의 모든 GAC 작업을위한 중 3 번 (다음 .NET4.0는 사용할 수 없음) 또는 다른 숫자 5를 사용할 수 있습니다처럼

2.

그래서, 나에게 업데이트 보인다 .

  1. 번호
  2. 문제가되지 않지만, 최신 버전을 사용하는 것이 더 논리적 보인다 그리고 질문에 대한 답변입니다.
  3. 아니요, 모든 GAC 작업에 항상 NETFX 4.0 Tools 버전 (.NET4.0을 사용할 수있는 경우)을 사용할 수 있습니다.
+2

정말로 대답하고 싶습니다 ... "그들 중 누구도 ... nuget 또는 bin FTW를 배포하지 마십시오!"!! –

+0

@DanielElliott 좋은 답변 ;-)하지만 여전히, 이번에는이 질문을 정리하고 싶습니다. –

+0

답변에 관심이 있습니다 ... 행운을 빌어 요! –

답변

3

짧은 버전 : .NET 4.0이 설치된 경우 NETFX 4.0 Tools 버전을 사용하십시오. 그렇지 않으면 별 문제가되지 않습니다. 질문에 대한

답변 : 당신이 NETFX 4.0 Tools 버전을 사용해야하는 경우에 설치된 .NET 4.0, 존재하지 않는

  1. 번호
  2. 정말 중요하지 않습니다. v7.0 SDK가 있고 .NET 4.0이 설치되어 있지 않은지 확실하지 않습니다.
  3. 아니요, 모든 GAC 작업에 항상 NETFX 4.0 Tools 버전을 사용할 수 있습니다.
3

Gacutil.exe는 .NET Framework 도구가 아니라 Windows SDK 도구입니다. 귀하의 컴퓨터에 두 가지 버전의 SDK가 있습니다. VS2008 설치에서 6.0A, VS2010 설치에서 7.0A가 있습니다. 또한 64 비트 운영 체제가 있으므로 64 비트 도구도 사용할 수 있습니다. gacutil.exe가 중요하지 않은 이유는 gacutil.exe를 별도로 포함시키는 이유입니다. Visual Studio Command Prompt를 계속 사용하려면 별도의 32 비트 및 64 비트 버전이 있어야합니다. C++ 프로젝트에서 중요한 점은 무엇입니까? VS2010은 CLR 버전 4와 CLR 버전 2를 모두 타겟팅 할 수 있으므로 총 6 가지 버전이 가능합니다.

큰 문제는 컴퓨터에 두 개의 GAC가 있다는 것입니다. GAC for .NET 4 어셈블리는 c : \ windows \ microsoft.net \ assembly에 저장됩니다. 이전 버전의 경우 c : \ windows \ assembly에 저장됩니다. 올바른 버전의 gacutil.exe를 사용하여 어셈블리를 적절한 GAC로 가져와야합니다. .NET 4를 대상으로하는 어셈블리의 경우 은 Bin \ NETFX 4.0 도구에있는을 사용해야합니다. 이전 버전의 경우 이 Bin에있는 것을 사용해야합니다.

전혀 사용하지 않는 것이 좋습니다. 어셈블리는 Dev Machine에 Copy Local 속성을 설정해야합니다. GAC는 배포 세부 사항이므로 사용자의 GAC에없는 어셈블리가 GAC에있을 때 문제가 발생합니다.

+0

또한 관리 권한이없는 사용자는 어셈블리가 GAC에 있어야하는 응용 프로그램 (Oracle ODP.NET과 같은)을 설치할 수 없습니다. ODP.NET의 경우 copy local이 작동하지 않습니다. –

0

이것은 최선의 대답은 아니지만 관찰에 유의합니다. 관련 Visual Studio 설치를 위해 개발중인 응용 프로그램에 사용중인 모든 것을 기반으로 최신 버전 폴더를 사용하십시오. 제어판> 프로그램 및 기능>을 비교하면 내 비주얼 스튜디오를위한 일 "에 설치된"

C:\Program Files (x86)\Microsoft SDKs\Windows\{SDK version}\bin\NETFX 4.5.1 Tools\gacutil.exe 

는 여기에서 여러 폴더를보고 있어요, 설치합니다. 나는이 두 설치 중에 업데이트 된 여러 폴더를 추측하고 있습니다.

폴더 여기서 "하여 gacutil.exe"상주과 수정 된 날짜 :

Visual Studio 2012 - 3/20/2014 
Visual Studio 2013 - 5/15/2015 

가에 무엇을 비교으로 활용하려면 다음 날짜 "에 설치"와

C:\Program Files (x86)\Microsoft SDKs\Windows\ 
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\ - 5/15/2015 

윈도우 비주얼 스튜디오 설치 GAC,이 명령을 실행하고 비교할 파일을 diff'ed.

cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ 
gacutil /l > c:\v8.1A.gac.txt 

그런 다음 각 버전에 맞게 폴더를 적절하게 변경했습니다.

관련 문제