2009-08-17 19 views
4

C#プロジェクトを2回コンパイルすると、2つのアセンブリが得られます。これらのアセンブリはまったく同じではありません(バイナリdiffを使用)。私はこれがなぜそうであるのか理由を考えることができますが、実際には2つのアセンブリのソースが同一であるということがあります。.NETアセンブリをどのように修正できますか?

私は、これらのアセンブリ間にパッチを作成し、顧客のマシンにパッチを適用することに懸念しています。

私はパッチを作成して適用することができるライブラリ(できれば.NET)またはツールを知っている人はいますか?

理想的には、プロジェクトレベルで依存関係を変更したり、ソースの数行をひねるような小さな変化を、処理する必要があります。この場合、アセンブリを完全に置き換えることができれば幸いですから、大きな変更に対処する必要はありません。

更新

私はもう少し背景は私が取得していますどのような明確に役立つかもしれないと思います。私は、アプリケーションを構築するための継続的な統合サーバーを持っています。ビルド番号とビルドしているバージョンを反映するようにファイルとアセンブリのバージョンを変更します。私は違ったことをすることができましたが、これは私が好きな選択です。

これにより、アプリケーションをビルドするときにアセンブリ参照が変更されますが、それには満足しています。私は今、以前にリリースされたバージョンにアップデートを配布することに懸念しています。私はInstallShieldを使用してアップデートをビルドします。 InstallShieldで使用可能なアセンブリは、小さなパッチに縮小されています。これらは更新のサイズを大きくは増やしません。

私のアプリケーションには、基本的に暗号化されたアーカイブを含むデータファイルがいくつかあります。 InstallShieldはこれらのアセンブリへのアクセス権を持っておらず、私のアーカイブを理解していません。それを解読して抽出する方法は知られていません。以前のアーカイブで変更されたファイルを見つけ出し、それらを新しい更新バージョンに置き換える独自のパッチルーチンを作成しました。基本的に検索と置換戦略。

1つのアーカイブには、これらのアセンブリのほぼ百(と成長)を含み、これらのアセンブリのいくつかは、資源として大きなデータファイルが含まれています。これらのアセンブリは、アプリケーションの一部であるアセンブリに依存します。それらはまた、継続的な統合構築中にコンパイルされます。ビルド中にそれらをコンパイルしないと、依存関係の問題の余地が残るでしょう。私はそれを試して管理するつもりはありません。パッチを作成するたびに、これらのアセンブリがすべて含まれています。私は現在、これらのアセンブリのパッチを生成することによってパッチサイズを減らすオプションを検討しています。

+0

タイムスタンプは、コンパイルされたアセンブリに含まれています。これは、コンパイルするたびに変更される理由です。 – Cheeso

+1

また、なぜ「小さな変更」のためにアセンブリを修正したいのですが、なぜ「大きな変更」の代わりにそれらを置き換えることができますか? 1つの更新手順を使用するだけではなく、アセンブリを交換してください。 – Cheeso

+0

Hm、ソースが同じ場合、なぜお客様のマシンでアセンブリを変更する必要がありますか?バージョン番号が同じであることを確認してください(AssemblyVersion属性に "*"がない場合)。 "古い"アセンブリも同様に使用できるはずです... – MartinStettner

答えて

3

これは、.NETはありませんが、あなたのためのパッチファイルを生成することができるはず -

http://www.tibed.net/vpatch/

私はゲームやマップのためにそれを使用するために使用さe.t.c.任意の2つのファイルで動作するはずです。

+0

私は見て、それが私が必要とするものかどうかを見ます。ありがとう! – Christo

+0

私はvpatchを見ました。それは私が期待したよりもうまく動作し、完全に動作します。再度、感謝します! – Christo

12

アセンブリを交換することをおすすめします。パッチ適用は、少なくとも置換えと比較して、常に少し問題がありました。アセンブリファイルはかなり小さい傾向にあるので、それらを置き換えることは通常大きな仕事ではありません。

通常、ソースは一般的に同じであればアセンブリが変化した理由は、いくつかのものの一つに関係しています。プロジェクトに変更が加えられている可能性がありますが、アセンブリの参照アセンブリの1つが変更されている可能性があります。その場合は、参照アセンブリを含むアセンブリの完全なセットを配布したい場合、またはバージョン管理の問題と顧客のマシンの破損が発生します。

新しいインストール可能ファイルを作成するのは、通常、マシンを所定の場所にパッチを適用しようとするよりはるかに簡単で安全です。

+4

+1良い、賢明なアドバイス。 –

+1

パッチを当ててみませんか?参照が変更された場合、影響は小さいかもしれませんが、適切なパッチはアセンブリAをBに変換し、A内のアセンブリ参照を変更するのに必要なビットのみを含めるでしょう。 – Christo

+3

フィールドでソフトウェアを修正しようと長年長年苦労しています任意のパッチ適用ソリューション私の会社と使用しているベンダーの両方がこの道を踏みとどまり、間違いなく最高で問題があることが判明しました。たいていの場合は問題なく動作しますが、問題が発生した場合は修正するのが非常に困難です。適切なインストールがパッチから処理することができるすべてを行うことは非常に難しく、アップデートをダウンロードするための帯域幅は安いです。パッチを当てるだけでは手間がかかりません。 –

関連する問題