4

COM ライブラリを (tlbimp を使用して直接、または Visual Studio の [参照の追加] ダイアログを使用して間接的に) インポートする場合、Interop.Word.dll などのバイナリ相互運用アセンブリの代わりに C# ソース コードを生成する方法はありますか?

UPD: リフレクターは悪い考えです。問題は、com インターフェイスが署名だけでなく、メンバーの順序であることです。リフレクターこの注文は違反です

4

3 に答える 3

1

先に進み、TLBIMP を使用して相互運用アセンブリを生成し、Reflectorを使用してそれを逆アセンブルします。ご覧のとおり、相互運用アセンブリには実際の実装コードはありません。次に、コード (または必要な CoClass とインターフェイス) をコピーして、プロジェクトの新しい .cs ファイルに貼り付けるだけです。

于 2011-06-01T16:20:03.190 に答える
0

C# を直接生成することはできませんが、相互運用ライブラリを微調整する必要があることが実際の問題である場合は、codeplex で CLR Interop チームのカスタム TLBIMP ツールを使用する方がうまくいく可能性があります。これは非常に柔軟で、完全なソース [to it .]

http://clrinterop.codeplex.com/releases/view/17579

更新: バイナリの配布を本当に回避しようとしている場合は、上記のツール (ソース形式) をプロジェクトに適切に統合して、実行時にこの相互運用ライブラリを生成することができます。結果?出荷するバイナリはありません。

于 2011-06-01T14:48:42.550 に答える
0

一般的にはできません。C# は、機能する相互運用アセンブリを作成するために必要なすべての構成要素をサポートしているわけではありません。たとえば、マーシャラーが一部の C++ 型を正しく変換するのを支援するために必要になる場合がありますが、C# の戻り値の型またはメソッド パラメーターに属性などを追加することはできません。

さようなら、アロイス・クルアス

于 2011-06-01T18:25:18.640 に答える