2011-01-13 6 views
1

まあ、ICSharpCode.SharpZipLib.dllファイルの名前をanythigに変更する際に問題が発生しています。私はファイル名を短縮しようとしています。私はプロジェクトのアセンブリを参照しますが、プログラムがライブラリを使用するステートメントに到達すると、アセンブリまたはファイル 'ICSharpCode.SharpZipLib'が見つからないというエラーが発生します。ファイル名をICSharpCode.SharpZipLib.dllに戻すと、アプリケーションは正常に動作します。だから、ファイル名を変更する方法はありますか?また、ライセンスに違反することなく変更することができます(商用アプリケーションで使用する予定です)。ありがとう。ICSharpCode.SharpZipLib.dllの名前を変更する

+0

にshortname.dllを追加しますか? –

+1

ちょうど名前の長さの問題は何ですか? –

+1

コンピューティングでは、名前は単なる記述的なものに過ぎず、我々は多くのひどい間違いを残している。ここでは、私たちをそこに戻すためにタイムマシンを作っていないことを望んでいます。 –

答えて

4

DLLの名前を変更すると、.NetランタイムはDLLを自動的に見つける方法を知らないため、

Assembly.Loadを呼び出して、名前を変更したファイルを手動で読み込むことができます。
メソッドが実行を開始する前に、JITterが(直接)メソッドによって使用されたすべての型をロードする必要があるため、アセンブリを使用するメソッドを呼び出す前に行う必要があることに注意してください。

+0

SLaks、それはうまくいきませんでした。 –

+1

@ジョン:あなたはおそらくそれを遅くロードしました。それを使用するメソッドを呼び出す前にロードして、JITterがそれを見つけることができるようにします。 – SLaks

+0

Slaks、それは私が正確に行ったことです(私はアセンブリをフォームロードイベントにロードしました)。私は答えを探して約6時間を費やしましたが、私がしなければならないのはドキュメンテーションです。アセンブリの解決がどのように行われたかについて約30分を読んだ後、私はそれをどのように扱うべきかを考え出した。あなたのお時間をありがとうございました。 –

-2

DLLはコンパイルされているため、ファイルの名前を変更しても、namespaceはその内部に変更されません。エイリアスはusingディレクティブで割り当てられます。

using zip = ICSharpCode.SharpZipLib; 
+1

彼は_file_名を短縮しようとしています。 – SLaks

+0

はい、ファイル名を短縮したいと思います。 –

5

ライブラリを逆アセンブルして新しい名前で再アセンブリできます。

など。

1)Visual Studioのコマンドプロンプトを開きます。

ildasm /all /out=ICSharpCode.SharpZipLib.il ICSharpCode.SharpZipLib.dll 
ilasm /dll /out=shortname.dll ICSharpCode.SharpZipLib.il 

2)はおそらく、あなたがアセンブリを名前を変更する前に、まだ名前を参照するアプリケーション内の参照を持っているプロジェクト

+1

また、中間ファイル(.il)を編集して、古い名前を新しい名前で検索/置換する必要がありました。置換は、特に ".assembly"および ".module"エントリで発生しました。これは間違いなくアセンブリの名前を変更する最も簡単な方法です。ありがとう。 – Jin

+0

これは素晴らしいですが、アンマネージコードがある場合は機能しません。 – nurettin

関連する問題