2012-03-27 1 views
9

だから、勝つ2008 R2 STD x64の上で、私は6は、(6)はGacutil.exeを持っているすべての異なる中で、(VSフォルダ内のものはカウントされません):どのgacutil.exeを使用しますか?

  1. C:\プログラムファイル\マイクロソフトのSDK \ Windowsの\ v6.0A \ビン
  2. C:\プログラムファイル\マイクロソフトのSDK \ Windowsの\ v6.0A \ビン\ x64の
  3. C:\プログラムファイル(x86の)\マイクロソフトのSDK \ WINDOWS \ V7 .0A \ Bin
  4. c:¥Program Files(x86)¥Microsoft SDKs¥Windows¥v7.0A¥Bin¥x64
  5. C:\プログラムファイル(x86の)\マイクロソフトのSDK \ Windowsの\ v7.0A \ビン\ NETFX 4.0ツール
  6. C:\プログラムファイル(x86の)\マイクロソフトのSDK \ Windowsの\ v7.0A \ビン\ NETFX 4.0ツール\ x64の

質問です:

  1. x64バージョンでは動作に違いがありますか?
  2. 好ましくはv7.0Aのバージョンv6.0Aをお勧めしますか?
  3. .NET 4.0アセンブリ用にNETFX 4.0 Toolsバージョンを使用し、残りの部分に "標準"バージョンを使用しますか?

また、一般的なタイプの記事がある場合は、感謝します。 Hans Passant's answerに関する

アップデート1

  1. gacutil.exeはとして廃止 "を構築、展開、および構成ツール(.NET Frameworkの)" の.NET Frameworkのツール一部です(!) 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を使用するかどうかは問題ではありませんでした。だから私はコメントなしで最後の段落を残します。

更新2.

だから、私には1が安全のWindows x86およびx64上のすべてのGACの操作のためにそれ以外の場合は数3(その後、.NET4.0が利用できない)、または5番のいずれかを使用することができますように思えます。

  1. は関係ありませんが、新しいバージョンを使用すると、より論理的なようだ:そして、質問に対する回答を示します。
  2. いいえ、すべてのGAC操作で常にNETFX 4.0 Toolsバージョン(.NET4.0が使用可能な場合)を使用できます。
+2

本当にお答えしたい...「誰もが...ナゲットやビンはFTWを展開していない」!! –

+0

@DanielElliott良いこと;-)しかし、今でも私は本当にこの質問をクリアしたいです。 –

+0

自分自身も答えに興味があります...幸運! –

答えて

3

ショートバージョン:.NET 4.0がインストールされている場合は、NETFX 4.0 Toolsバージョンを使用してください。そうでなければ、それは本当に重要ではありません。質問へ

回答:あなたはNETFX 4.0 Toolsバージョンを使用する必要があり、その場合には何の.NET 4.0がインストールは、存在しない場合を除き

  1. は本当に重要ではありません。 v7.0 SDKを使用でき、.NET 4.0がインストールされていないかどうかは不明です。
  2. いいえ、すべてのGAC操作に常にNETFX 4.0 Toolsバージョンを使用できます。
3

Gacutil.exeは.NET Frameworkツールではなく、Windows SDKツールです。あなたのマシンには2つのバージョンのSDKがあります。あなたはVS2008のインストールから6.0A、VS2010のインストールから7.0Aを得ました。また、64ビットのオペレーティングシステムを使用しているため、64ビットのツールも利用できます。 gacutil.exeの問題ではありませんが、なぜそれらを別々に組み込むのかはわかりません。たぶん、Visual Studioのコマンドプロンプトを機能させるために、32ビットと64ビットのバージョンが別々に用意されていることに注意してください。 C++プロジェクトにとっては重要なことです。 VS2010では、CLRバージョン4とCLRバージョン2の両方を対象にすることができ、合計で6バージョンになります。

重要なことは、マシンに2つのGACがあることです。 GAC for .NET 4アセンブリは、c:¥windows¥microsoft.net¥assemblyに格納されています。以前のバージョンでは、c:\ windows \ assemblyに格納されています。適切なバージョンのgacutil.exeを使用して、適切なGACにアセンブリを取得する必要があります。 .NET 4をターゲットとするアセンブリの場合、がBin \ NETFX 4.0ツールのものを使用する必要があります。そして以前のものでは、がBinのものを使用する必要があります。

アセンブリを使用することは、まったく最適ではありません。アセンブリには、ローカルマシンにコピープロパティが設定されている必要があります。 GACはデプロイメントの詳細です.GACには、ユーザーのGACにはないアセンブリがある場合に問題が発生します。

+0

また、管理権限のないユーザーは、アセンブリがGACに存在する必要があるアプリケーション(Oracle ODP.NETなど)をインストールすることはできません。 ODP.NETの場合、コピー・ローカルは機能しません。 –

0

これは最良の回答ではありませんが、私は観察に気付いています。関連するVisual Studioのインストール用に開発されたアプリケーションに使用しているものに基づいて、最新のバージョンのフォルダを使用します。

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

コントロールパネル]> [プログラムと機能を比較した場合>私のVisual Studioのための日「にインストールされては」私はここの下で、多くの異なるフォルダを見ている、インストールされます。私はこれらの2つのインストール中に更新された複数のフォルダを推測しています。 "Gacutil.exeを" 存在と更新日時

フォルダ:

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 
日 "にインストールさ" と

WindowsのVisual Studioのインストール:にあるものの比較を取得するには

Visual Studio 2012 - 3/20/2014 
Visual Studio 2013 - 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 

次に、バージョンごとに適切にフォルダを変更しました。

関連する問題