質問

かなり奇妙な問題があります。 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は、名前ファイルで定義されているシンボルのバージョンを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top