.NET DLLファイルをGACに登録するにはどうすればよいですか?


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.

パスが正しくないと表示されます。

これを.NETcmdプロンプトで使用する必要がありますか?その場合、.NETcmdプロンプトを見つけることができません。


正確なエラーメッセージは何でしたか?それはへのパスを参照してgacutil.exedllname.dllますか、それとも実行しますか?
UuDdLrLrSs 2018

回答:


101

あなたはgacutilツールを使用してそれを行うことができます。最も単純な形式:

gacutil /i yourdll.dll

Visual Studioコマンドプロンプトは、スタートメニューの[プログラム] -> [ Visual Studio] -> [ VisualStudioツール]にあります


7
Visual Studioがない場合は、C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \にあるgacutil.exeにアクセスできます。少なくともWin2012R2サーバーに存在する場所です。 。
sonyisda1 2016年

昇格が必要な関数があるので、そのdllをアセンブリに配置すると特権がありますか?管理者以外のユーザーは、これらの機能を昇格で実行できますか?
SusarlaNikhilesh19年1

私のマシンでは、C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX4.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

C:\Windows\assemblyWindowsエクスプローラーを使用してDLLファイルをフォルダーにドラッグアンドドロップするだけです。

警告:

以前のバージョンの.NETFrameworkでは、Shfusion.dll Windowsシェル拡張機能を使用すると、アセンブリをファイルエクスプローラーにドラッグしてインストールできます。.NET Framework 4以降、Shfusion.dllは廃止されました。

出典:方法:アセンブリをグローバルアセンブリキャッシュにインストールする


2
「実行」はドラッグアンドドロップでは使用できないため、管理者アカウントでログインする必要があります。
Salman Siddiqui 2014

6
これは私の側には影響しません-ライブラリは追加されず、エラーメッセージもありません。管理者アカウントを使用しています。

8
「以前のバージョンの.NETFrameworkでは、Shfusion.dll Windowsシェル拡張機能を使用して、アセンブリをファイルエクスプローラーにドラッグすることでインストールできました。.NETFramework4以降、Shfusion.dllは廃止されました。」msdn.microsoft.com/en-us/library/dkkx7f79(v=vs.110).aspx
njplumridge 2016年

「ドラッグアンドドロップ」の強調-コピーアンドペーストが機能しない
Todd

13

ちなみに、これらの応答は、gacutilがC:\ WINDOWS \ Microsoft.NET \ Framework \ v1.1 *にあることを示していません。

v2.0フォルダにありませんでした。しかし、ここで前に提案したように、DLLをC:\ WINDOWS \ Assemblyフォルダーにドラッグアンドドロップしてみました。これは、.NETライブラリである限り、より簡単で機能します。また、COMライブラリを試しましたが、アセンブリマニフェストを予期しているというエラーで失敗しました。それがここでの質問ではなかったことは知っていますが、誰かがそれを追加できないことがわかった場合に備えて、それが理由かもしれないと私は言及したいと思いました。

-トム


1
これらの応答はgacutil、Windowsに付属していないことを示していません。
イアン・ボイド

13

ウィキペディアから

gacutil.exeは、GACの操作に使用される.NETユーティリティです。

次のコマンドを使用して、GACでの共有アセンブリの可用性を確認できます。

gacutil.exe /l "assemblyName"

次のコマンドを使用して、共有アセンブリをGACに登録できます。

gacutil.exe /i "assemblyName"

または、GUIを使用してアセンブリファイルを次の場所にドロップします。

%windir%\assembly\

/?フラグを使用する場合、このユーティリティの他のオプションについて簡単に説明します。

gacutil.exe /?

GacUtilには.NETは付属していません。ドラッグアンドドロップでアセンブリを登録するために使用されていたシェルドロップアンドドロップヘルパーが機能しなくなりました。
イアン・ボイド

5

コマンドプロンプトが心配な場合は、GACViewを試してください。

DOSでPATHを適切に設定していません。DOSで使用するには、gacutilが存在する場所へのパスを指定する必要があります。


4
  • V2012またはシステムにインストールされている任意のバージョンの開発者コマンドプロンプトを実行する

  • gacutil / i pathofDll

  • 入る

完了!!!


「開発者」コマンドプロンプトに言及しました。ます。gacutilは、ビルドコマンドプロンプトを使用できないよう

3

andoが言ったように、アセンブリをC:\ windows \ assemblyフォルダーにドラッグアンドドロップするだけです。できます。


「ドラッグアンドドロップ」の強調-コピーアンドペーストが機能しない
Todd

1
ドラッグアンドドロップは機能しなくなりました。ShellFusionハンドラーは長い間非推奨になっています。
イアン・ボイド

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.