- - PR -
dllに後から厳密名をつけたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-20 01:20
すでに厳密名なしで作成しているdllに
後から厳密名をつけることは可能でしょうか? .NETはまだ手探り状態で 厳密名の定義の理解も怪しいですが、 なにか答え、アドバイスなどありましたら どうか教えてください。 よろしくお願いします。 | ||||||||
|
投稿日時: 2006-09-20 09:18
'後から' のタイミングが良くわからないのですが、アセンブリに遅延署名をしたいということでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-09-20 10:35
遅延署名というのは厳密名をもっているDLLに対して後から署名をすることですよね。 私の場合は自分のプログラムにフリーのDLLを 参照してコンパイルをしようとしているのですが そのDLLが「厳密名を持っていません」といわれてしまいます。 つまりDLL自体に厳密名がつけられていないのだと思ってます。 そのようなDLLに対して後から厳密名をつける方法を探してます。 普通DLLはビルド時に厳密名をつけるものだと思うので、 すでにビルド済みのDLLに対して厳密名をつけるのに困ってます。 | ||||||||
|
投稿日時: 2006-09-20 10:59
単に参照して利用したいだけなら厳密名を求められることはないはずです。
なぜ「厳密名を持っていません」といわれるのか、それが本当に必要なのかを 調べてみたほうがいいように思います。 | ||||||||
|
投稿日時: 2006-09-20 11:04
COMを使ったプログラムを組んでるので それで厳密名をもっている必要があるのだと思ってます。 自分でソースからビルドしたDLLも 厳密名をつける必要があったので、 たぶん厳密名は必要なんだと思います。 | ||||||||
|
投稿日時: 2006-09-20 11:50
署名をすると厳密名を持つことになると思いますが、違いました? | ||||||||
|
投稿日時: 2006-09-20 12:30
一応、regasm.exe で /codebase 付けて厳密名なしのアセンブリを登録することはできます。警告は出ますけど。
ですので、自分で作った DLL に対して厳密名を付けなければ一応の対処にはなります。 もちろん、警告の内容を理解できて且つそのリスクを許容できる場合のみとすべきですが。 必ずしも COM に登録するに当たって /codebase オプションを付けなければならないわけではありません。運用によってはこれで問題ない場合もあります。この場合も、自作アセンブリに厳密名を付けないことになります。 GAC に登録した場合は不要ですがそもそも厳密名がなければ GAC に登録できないのでこれは除くとして、条件はアセンブリが公開する COM オブジェクトを要求する実行ファイルが見つけられる位置にアセンブリが存在すること。たとえば実行ファイルと同じディレクトリにアセンブリを配置するとか。 たとえば WSH から使う場合は cscript.exe/wscript.exe と同じ system32 ディレクトリにアセンブリを配置します。 // %PATH% は検索したっけ? 厳密名を付けたいのなら、その DLL の作者に頼むしかないでしょう。 ところでアセンブリを COM に公開することを念頭に書きましたが、そうではなかったですかね? COM を使ったという表現が少々曖昧ですが。 | ||||||||
|
投稿日時: 2006-09-20 21:55
いろいろ試してみました。
@sn.exe -R の実行 上記コマンドで署名をしようとしても dllが「厳密な名前をもっていません」といわれるのでうまく署名できません。 Aregasm.exe /codebase の実行 Bregasm.exe /tlb を実行 上記コマンドのどちらかの作用でVSプロジェクトの[参照の追加]-[COM]に 登録したDLLが現れていたので参照を追加してみようとしましたが、 「ActiveXタイプライブラリ'(ライブラリ名).tlb'が. NETアセンブリからエクスポートされましたが参照として追加できません。 .NETアセンブリへの参照を追加してください」と 言われます。 ※ 上記エラーの「.NETアセンブリへの参照を追加してください」というエラーは どういう意味か分からないでしょうか? 検索してもヒットしません。 これはいったい何を言ってるのか教えていただけないでしょうか? |