tlbexp.exeはメソッド名のケースを変更します
質問
かなり奇妙な問題があります。 C#ライブラリからCOMへのインターフェイスをエクスポートしています。 「com」プロジェクト設定を「登録」を有効にしたため、tlbexp.exeに電話してタイプLibsを作成します。
メソッド名でキャメルケースを使用していますが、エクスポートされたタイプライブラリがこれらのメソッドがパスカルケースのクラス名と一致するように変更されることに気付きました...
例えば
interface IFoo
{
void randomClass()
}
class RandomClass
{
}
タイプlibのエクスポートされたifooは、ifoo-> randomclass()の代わりにifoo-> randomclass()を定義します。
何がこれを引き起こし、それを止める方法についてのアイデアはありますか?
解決
COMは症例に依存しないため、「ランダムクラス」と「ランダムクラス」の両方が、出力ライブラリのテーブルの同じシンボルです。 (これは、.NETガイドラインがクラス名と方法のためにPascalcasingを推奨する理由の一部です。)
選ばれるものは、コンパイラが最初に発するものになり、これはプログラマーの観点からはかなり非決定的です!
TLBEXPを使用して、どちらかを選択できます /names
パラメーターですが、両方のケーシング できません 図書館に共存します。
TLBEXPの名前ファイルを使用するには、1行ごとに識別子のリストを持つファイルを作成するだけです。
RandomClass
SomeOtherIdentifier
それからあなたはそれをそう呼びます:
tlbexp MyAssembly.dll /names=MyNames.txt
TLBEXPは、名前ファイルで定義されているシンボルのバージョンを使用します。
所属していません StackOverflow