У меня есть сборка C #, которую я использую в качестве внутрипроцессного COM-сервера, используемого неуправляемым приложением C ++. Сборка использует веб-сервис, который никогда не изменится, поэтому нет необходимости когда-либо обновлять прокси-классы веб-сервиса. Вот почему прокси-классы создаются один раз, а Reference.cs
файлы просто помещаются в хранилище и только компилируются оттуда.
Проблема заключается в том, что по умолчанию прокси-классы веб-службы являются общедоступными и, следовательно, доступны для COM. Это раздувает typelib и загрязняет реестр. Изменение видимости для внутреннего разрыва сборки, поэтому эти объекты должны оставаться открытыми, но не должны подвергаться воздействию COM.
Тупой способ - подойти к каждому общедоступному интерфейсу / классу в файлах Reference.cs
и пометить его
[System.Runtime.InteropServices.ComVisible(false)]
После этого он больше не подвергается воздействию COM.
Есть ли лучший способ?