2009-03-06 11 views
21

最近まで、われわれはネイティブおよび.NET COMコンポーネントにregistration-free COMを喜んで使用していました。しかし、リリース候補からリリースに移行するために.NETアセンブリのバージョン番号を変更しただけで、Windows XP SP3(Vistaではなく)でアプリケーションがランダムにクラッシュするような不思議な問題に遭遇しました。誰も登録不要のCOMと.NETコンポーネントを正常に使用していますか?

多くの失われた人工歯を研削した後、問題がknown bug in sxs.dllであり、.NETクラスに関する情報を取得するときにヒープの破損が発生することが判明しました。問題を解消するホットフィックスがありますが、ホットフィックスは再配布されません。

登録不要のCOM実装にこのような恐ろしいバグがあると私はちょっと迷っています。登録無料のCOM for .NETコンポーネントを使用している人は誰ですか?この問題をどうやって解決しましたか?

+0

1重要な問題! BTWでは、レジストリフリーのCOM質問にそのタグが一般的であるため、タグ「regfreecom」を追加することをお勧めしますか? – MarkJ

+1

...実際には私はちょうどそれ自身のタグをつけた...希望はOKです – MarkJ

+0

確かに。一貫性のあるタグがより便利です。 –

答えて

9

この問題は、SxSがクラス情報のサイズを計算する方法に関連しています。アセンブリのバージョン番号はこの情報の一部です。

リリース候補のバージョン番号で作業していたため、リリースのバージョン番号をRCリリースと同じにすることをお勧めします。

これが機能しない場合は、修正プログラムの再配布権を要求するための確立されたプロセスがあります。私はこのルートを追求するためにマイクロソフトのカスタマーサポートに従事します。

4

ネイティブコンポーネントと.NETコンポーネントの両方に登録不要のCOMを使用しています。これらのコンポーネントに固定されたアセンブリバージョン番号を使用することにしました(主に、動的ビルド番号/ *を持つ.NETコンポーネントを繰り返しregasmするときにレジストリが乱雑にならないようにするため)。理想的ではありませんが、特定のコンポーネントのどのバージョンが使用されているかを判断する他の方法があります(個別にパッチを当てることはありません)。

これは実際には非常に厄介な問題のように聞こえます。そのKB記事は、SxSを使用するようなことはほとんどありません。オプションです...私が知っている限り、regフリーのCOMを実行する唯一の方法ですか?

+1

お返事ありがとうございます。登録無料のCOM for .NETを問題なく使用している他の人のことを聞いてみると、われわれは単純に不運だったかもしれないことを示している。私たちの問題を引き起こしたのはおそらくアセンブリのサイズの変更だったことに注意してください。バージョンを変更しないと、おそらくあなたを守ることはできません。 –

関連する問題