COM VB.NET работает хорошо, но C # нужно перекомпилировать - PullRequest
0 голосов
/ 20 августа 2010

У меня есть простой класс C # с атрибутами COM:

[ComClass("1DC7B465-49FA-4ad1-893E-C19657E1ED25", "F97459E6-AB37-43e6-AC57-6AE5F9A9A835", "BD9F01C7-162A-4f95-9398-C126C152B965")]
    [ComVisible(true)]
    public class Class1
    {

    }

Мне нужно использовать этот класс из приложения VB6. Это работает хорошо, пока я не изменил AssemblyVersion .NET DLL. Тогда VB6 не создает экземпляр класса C # (выдает исключение ACtiveX), пока я не перекомпилирую его (приложение VB6).

Интересно, что мне не нужно перекомпилировать Class1, если он написан на VB.NET.

В чем разница между C # и VB.NET? Есть ли способ заставить C # вести себя как VB.NET?

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Наиболее вероятная разница между стандартными AssemblyInfo.cs и AssemblyInfo.vb, созданными двумя мастерами проекта.Вы можете сравнить эти два, чтобы увидеть, отличаются ли какие-либо атрибуты уровня сборки.Кстати, я бы поставил на атрибуты версии.

0 голосов
/ 20 августа 2010

Я просмотрел сборки, сгенерированные компилятором C # и VB.NET, и обнаружил, что VB.NET создает атрибут Guid в дополнение к атрибуту ComClass.C # не делает этого.Поэтому я явно добавил атрибут Guid в класс C #, и это решило мою проблему.

...