2012-07-03 15 views
5

私は最近、ファイルの名前を変更してコピーを実行することで、使用中のアセンブリにコピーできることを発見しました。例えば。アセンブリの名前を変更してコピーするのは安全ですか?

C:\フォルダ\ MyLibrary.dll
=> Cに名前を変更:\フォルダは\ MyLibrary.dll_old
=>新しいバージョンCにコピー:\フォルダ\ MyLibrary.dll(V2.0)

次回アプリケーションが起動すると、この新しいアセンブリがロードされると言われました。また、アプリケーションの実行中も古いアセンブリを使用し続けます(名前が_oldに変更されているにもかかわらず)。

私にハックのようです。このようにアセンブリを更新するのは安全ですか?

+1

「Hack」は非常に適切な用語です:)「奇妙なこと」と「悪い狂気」も気になります:) – paulsm4

+8

「Hot Deploy」と呼ばれています - http://stackoverflow.com/questions/を参照してください。 2335755/how-to-update-a-running-a-running-c-sharp-process-ana-hot-deploy – dash

+0

これをサポートする多くのプラグインのアプローチがサポートされています。一方、Windowsのサービスhttps://github.com/Topshelf/Topshelf/ではこれをサポートしています。 – kenny

答えて

3

安全です。古いアセンブリがロードされたままである限り、同じアプリケーションドメインは再度ロードしようとしません。ファイル名は、アプリケーションの継続的な実行には重要ではありません。

しかし、実際には、3つ以上の同時バージョンと、未使用のファイルを最終的に削除する仕組みについて考える必要があります。

+0

「3つ以上の同時バージョンがある」ということを明確にすることはできますか? –

+0

@ P.Brian.Mackey - '_old'接尾辞を付けるだけでは不十分かもしれません。接尾辞は動的でなければなりません。バージョン2の上にバージョン3をホット・デプロイし、バージョン2の名前変更に失敗すると、バージョン1が実行されている可能性があります。一方、動的サフィックスは、使用されていないDLLをパージするための自動化されたメカニズムが信頼できない場合、より多くを傷つけます。 –

関連する問題