У меня есть довольно странная проблема. Я экспортирую интерфейс от библиотеки C# до COM. Я включил 'регистр с COM' установка проекта, таким образом, это звонит, tlbexp.exe для создания типа освобождает.
Мы используем Camel-регистр на наших именах методов, и я заметил, что экспортируемая библиотека типов изменяет их любой метод, который, оказывается, совпадает с именем класса к Pascal-регистру...
например,
interface IFoo
{
void randomClass()
}
class RandomClass
{
}
Экспортируемый IFoo в lib типа определяет IFoo-> RandomClass () вместо IFoo-> randomClass ()
Какие-либо идеи о том, что вызывает это и как остановить его?
Поскольку в COM регистр не учитывается, «RandomClass» и «randomClass» являются одним и тем же символом в таблице выходной библиотеки. (Это отчасти причина того, почему рекомендации .NET рекомендуют PascalCasing для имен классов и методов.)
Тот, который будет выбран, будет первым, который испускает компилятор, и это довольно недетерминировано с точки зрения программиста. Посмотреть!
Вы можете выбрать один или другой, используя параметр tlbexp / names
, но оба корпуса не могут сосуществовать в библиотеке.
Чтобы использовать файл имен tlbexp, вы просто создаете файл со списком идентификаторов, по одному в каждой строке:
RandomClass
SomeOtherIdentifier
Затем вы вызываете его так:
tlbexp MyAssembly.dll /names=MyNames.txt
tlbexp затем будет использовать версию символа, определенного в именах файл.