Здравствуйте dragon23, Вы писали:
D>Интерфейс отдельно можно и не объявлять, пусть c# сам поработает и если вы не завели новые public методы, свойства и т.п., т.е. не расширили интерфейс, то будет работать без перерегистрации.
D>Например,так
D>D>[ClassInterface(ClassInterfaceType.AutoDual)]
D>
Нельзя. Есле не ребилд, то покрайней мере банальное добавление метода приведет к тому, что для интерфейса будет сгенерирован новый гуид. Это приведет к неработоспособности половины клиентов. Остальных придется перекомпилировать. Единственный разумный выход — это отдельное описание интерфейса и задание ему гуида вручную.
Более того. Это еще и более коректно с точки зрения качества описания интерфейса между клиентом и сервером. Всегда лучше чтобы паблик-интерфейс передающийся на сервер был описан отдельно и его методы не пересикались с методами реализации. Вдруг придется вызывать этот объект не как COM-сервер, т.е. через его паблик-методы или через другой интерфейс?
VD>>// Обратите внимание на то, что версия сборки задана явно!
VD>>// Т.е. без использования знака *. Это позволяет отучить VS
VD>>// излишне беспокоиться о "правильности" версии сборки.
VD>>// И тем самым снять проблему постоянной перерегистрации
VD>>// COM+-приложения, COM+-прокси и перекомпиляции клиента.
VD>>[assembly: AssemblyVersion("1.1.100.200")]
D>Так вот с этой строчкой работает ничуть не хуже
D>D>[assembly: AssemblyVersion("1.1.*")]
D>
D>и не требуется ни какой перерегистрации приложения или перекомпиляции клиента
Ну ты попробуй. Создай клиента на .NET... зарегистрируй его на удаленном компьютере... перекомпилируй сервер... далее ты все поймешь, ты все увидишь сам.
... << RSDN@Home 1.0 alpha VladD2.1.0.alpha 12.1.0.1028.36665 >>