Frage

habe ich ein ziemlich seltsames Problem. Ich Export eine Schnittstelle aus einer C # Bibliothek COM. Ich habe das Verzeichnis mit COM "Projekteinstellung aktiviert ist, so dass es Tlbexp.exe nennt die Art Libs zu machen.

Wir verwenden Kamel Fall auf unseren Methodennamen und ich bemerkte, dass die exportierte Typbibliothek ändert diese jede Methode, die mit einem Klassennamen Pascal Fall ...

zu fallen zusammen geschieht

z

interface IFoo
{
void randomClass()
}

class RandomClass
{
}

Die exportierte IFoo in der Art lib definiert IFoo-> RandomClass () anstelle von IFoo-> randomClass ()

Alle Ideen, was bewirkt, dass diese und wie es zu stoppen?

War es hilfreich?

Lösung

Da COM ist Groß- und Kleinschreibung, die beide „RandomClass“ und „randomClass“ ist das gleiche Symbol in der Tabelle der Ausgabebibliothek. (Dieser Teil des Grundes, warum die .NET-Richtlinien PascalCasing für Klassennamen und Methoden empfehlen.)

Die eine, die gewählt wird wird die erste der Compiler gibt, und dies ist ziemlich nicht-deterministisch aus der Sicht des Programmierers!

Sie können eine wählen oder die andere, TlbExp der /names Parameter verwendet wird, aber beiden Gehäuse kann nicht koexistieren in der Bibliothek.

Um TlbExp Die Namen der Datei zu verwenden, erstellen Sie einfach eine Datei mit einer Liste von Kennungen, eine pro Zeile:

RandomClass
SomeOtherIdentifier

Dann rufen Sie es wie folgt:

tlbexp MyAssembly.dll /names=MyNames.txt

TlbExp wird dann die Version der im Namen Datei definiert Symbol verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top