C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: Framework4.0で作成したDLLについて


(過去ログ 101 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■59761 / inTopicNo.1)  Framework4.0で作成したDLLについて
  
□投稿者/ ファルコ (1回)-(2011/06/06(Mon) 17:12:05)

分類:[.NET 全般] 

OS:Windows xp SP3
言語:Visual Studio 2010 C# express

Framework3.5で作成したDLLをアセンブリ登録した場合には「C:\WINDOWS\assembly」に格納されます。
コマンド文 =gacutil -i XXXXXX.dll
gacutilバージョン=3.5.30729.1

今回はFramework4.0で作成したDLLを登録しようとするとうまく登録できません。
コマンド文 =gacutil -i XXXXXX.dll
gacutilバージョン=4.0.30319.1

試しに3.5で作成したDLLを「C:\WINDOWS\assembly」にドラッグ&ドロップしてみたらうまくいきますが、
これを4.0で作成したDLLをドラッグ&ドロップしても格納できません・・・。

DLLのGAC登録場所が変わった?

どなたかわかる方おられましたらよろしくお願いします。
引用返信 編集キー/
■59774 / inTopicNo.2)  Re[1]: Framework4.0で作成したDLLについて
□投稿者/ Azulean (756回)-(2011/06/06(Mon) 22:25:04)
No59761 (ファルコ さん) に返信
> 今回はFramework4.0で作成したDLLを登録しようとするとうまく登録できません。
> コマンド文 =gacutil -i XXXXXX.dll
> gacutilバージョン=4.0.30319.1

登録できないとのことですが、エラーが出るのでしょうか?
エラーが出ないとして、登録できたことをどうやって確認しているのでしょうか?

> 試しに3.5で作成したDLLを「C:\WINDOWS\assembly」にドラッグ&ドロップしてみたらうまくいきますが、
> これを4.0で作成したDLLをドラッグ&ドロップしても格納できません・・・。
>
> DLLのGAC登録場所が変わった?

C:\Windows\Assembly は .NET Framework 3.5 までの場所ですね。
.NET Framework 4 でどうなったかを裏付ける文書は見つけられていませんが、実験結果を紹介しているページがありましたのでリンクしておきます。
http://batarnyo.seesaa.net/article/151676093.html
引用返信 編集キー/
■59782 / inTopicNo.3)  Re[2]: Framework4.0で作成したDLLについて
□投稿者/ ファルコ (2回)-(2011/06/07(Tue) 10:27:39)
2011/06/07(Tue) 10:29:40 編集(投稿者)
2011/06/07(Tue) 10:29:37 編集(投稿者)

Azuleanさん書き込みありがとうございます。

> 登録できないとのことですが、エラーが出るのでしょうか?
> エラーが出ないとして、登録できたことをどうやって確認しているのでしょうか?

「C:\WINDOWS\assembly」にドラッグ&ドロップするとファイルの総数が1つ増えるのでその数量で確認しています。

> C:\Windows\Assembly は .NET Framework 3.5 までの場所ですね。
> .NET Framework 4 でどうなったかを裏付ける文書は見つけられていませんが、実験結果を紹介しているページがありましたのでリンクしておきます。
> http://batarnyo.seesaa.net/article/151676093.html

このサイトも参考にさせていただきました。
↓コマンド
gacutil /i Mono.Security.dll

「C:\Windows\Microsoft.NET\assembly\GAC_MSIL」に登録されたとありますが、私の作成したDLLは登録されませんでした・・・。
↑のパスにフォルダがありその中にいろいろなDLLがありますが、登録が成功するとフォルダが作成されその中にDLLができるんでしょうかね?

引用返信 編集キー/
■59869 / inTopicNo.4)  Re[3]: Framework4.0で作成したDLLについて
□投稿者/ ファルコ (3回)-(2011/06/09(Thu) 15:34:52)
すいません解決しました。

グローバルアセンブリキャッシュに登録するのに必要なツールが「gacutil.exe」ですが、3.5の場合は単体でこのexeファイルを動作することが可能ですが
4.0の場合は以下のPATH
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\"
でしか正常動作しません。。。
同一フォルダ内に何か必要なファイルがあるのでしょう。

<参考>
gacutil.exe(3.5.30729.1)
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\gacutil.exe

C:\WINDOWS\assembly

gacutil.exe(4.0.30319.1)
C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe

C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL
解決済み
引用返信 編集キー/
■59897 / inTopicNo.5)  Re[4]: Framework4.0で作成したDLLについて
□投稿者/ Azulean (758回)-(2011/06/09(Thu) 23:08:32)
No59869 (ファルコ さん) に返信
> グローバルアセンブリキャッシュに登録するのに必要なツールが「gacutil.exe」ですが、3.5の場合は単体でこのexeファイルを動作することが可能ですが

逆に問いたいのですが、なぜ単体で動作させる必要があるのでしょうか?
そのファイルだけをコピーして別の環境に持って行くとかは、NG だと思っていますので、単体で動作させる必然性がわかりませんでした。
引用返信 編集キー/
■59970 / inTopicNo.6)  Re[5]: Framework4.0で作成したDLLについて
□投稿者/ ファルコ (4回)-(2011/06/14(Tue) 13:29:04)
2011/06/14(Tue) 13:30:20 編集(投稿者)

> 逆に問いたいのですが、なぜ単体で動作させる必要があるのでしょうか?
> そのファイルだけをコピーして別の環境に持って行くとかは、NG だと思っていますので、単体で動作させる必然性がわかりませんでした。

返信遅くなりまして申し訳ございません。

VS 2010 C#で作成したDLLを複数台のクライアントPCにGAC登録する為です。
クライアントPCにはVSをインストールしないため「gacutil.exe」が存在しません。
(Visual studioツールも含む)

そのためCMDコマンドプロンプトにて「gacutil.exe」を動作させる必要がありました。
(「gacutil.exe」は同一のPATHに「gacutil.execonfig」が必要。←Ver4について)

「gacutil.exe」の取り扱いですが・・・
ほかPCで使用してはいけないもの。という考えをもっていませんでした。
検討させていただきます。

Azuleanさんいろいろありがとうございます。

引用返信 編集キー/
■59972 / inTopicNo.7)  Re[6]: Framework4.0で作成したDLLについて
□投稿者/ 魔界の仮面弁士 (2218回)-(2011/06/14(Tue) 14:34:11)
No59970 (ファルコ さん) に返信
> VS 2010 C#で作成したDLLを複数台のクライアントPCにGAC登録する為です。
GACUtil.exe は、開発中やテスト中に GAC に厳密名付きアセンブリを
インストールするために使われるツールですが、運用環境向けの物ではありません。

手間はかかりますが、基本的には Gacutil.exe 等を使うのではなく、
そのためのインストーラを用意するべきとされています。
(だからこそ、Gacutil は SDK にしか付属していないとも言えるでしょう)


http://msdn.microsoft.com/ja-jp/library/yf1d93sz.aspx

》配置時にアセンブリをグローバル アセンブリ キャッシュにインストールするには、
》Windows Installer 2.0 (以降)を使用する必要があります。

》Windows エクスプローラや グローバル アセンブリ キャッシュ ツール (Gacutil.exe) では、
》Windows Installer を使用した場合には提供されるアセンブリ参照カウントや
》その他の機能が提供されないため、これらのツールは開発時にだけ使用してください。


http://msdn.microsoft.com/ja-jp/library/dkkx7f79.aspx

》Gacutil.exe は開発専用です。製品アセンブリをグローバル アセンブリ キャッシュに
》インストールするためには使用しないでください。

》Microsoft Windows Installer 2.0 を使用する。
》これは、アセンブリをグローバル アセンブリ キャッシュに追加する
》最も一般的な方法です。この方法をお勧めします。
》このインストーラーを使用すると、グローバル アセンブリ キャッシュ内の
》アセンブリの参照カウントが示されるなどの利点があります。


Express 版を使っている場合は別ですが、それより上位のエディションをお使いであれば、
Visual Studio のセットアップ プロジェクトで、「対象コンピューター上のファイル システム」に
特別なフォルダーとして「グローバル アセンブリ キャッシュ フォルダー」を追加し、
そこにアセンブリを登録しておくことで、インストール時にアセンブリを GAC に
登録するようなインストーラーを作成できたかと思います。


> クライアントPCにはVSをインストールしないため「gacutil.exe」が存在しません。
一応、こんなメソッドもあったりします。
http://msdn.microsoft.com/ja-jp/library/system.enterpriseservices.internal.publish.gacinstall.aspx
http://dobon.net/vb/dotnet/deployment/installgac.html


>>> 試しに3.5で作成したDLLを「C:\WINDOWS\assembly」にドラッグ&ドロップしてみたらうまくいきますが、
>>> これを4.0で作成したDLLをドラッグ&ドロップしても格納できません・・・。
この機能は、.NET Framework 4 では廃止されました。それより以前のバージョンにおいては、
Shfusion.dll (アセンブリ キャッシュ ビューアー)という Windows シェル拡張機能の働きで、
Windows エクスプローラーへのドラッグでの登録がサポートされています。
http://msdn.microsoft.com/ja-jp/library/34149zk3.aspx

しかし、(以前のバージョンであっても)運用環境に対しては Windows Installer を利用すべきかと。
引用返信 編集キー/
■59989 / inTopicNo.8)  Re[6]: Framework4.0で作成したDLLについて
□投稿者/ Azulean (763回)-(2011/06/14(Tue) 22:50:41)
予想された展開だったので突っ込んで正解だったようです。
基本的な回答は魔界の仮面弁士さんのものをご参照頂くとして、気になった点を突っつきます。

No59970 (ファルコ さん) に返信
> 「gacutil.exe」の取り扱いですが・・・
> ほかPCで使用してはいけないもの。という考えをもっていませんでした。
> 検討させていただきます。

自分が作ったもの以外をコピーする必要がある場合、それを再頒布する権利を有しているかについて確認することが必要です。
これは使用許諾契約書などにコピーや再頒布に関して明言されていることが多数ですので、こういった機会にでもぜひ確認してください。
(Microsoft の製品で再頒布を認めているケースの多くは、REDIST.TXT などで指定されたファイルに限定されます)
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -