2009-11-19 4 views
0

Я хочу сильное имя управляемое приложение, которое ссылается на многие управляемые сборки и компоненты ActiveX и COM (написанные на C++) через interop. И поскольку сильно названная сборка не может ссылаться на слабо названные сборки, не могли бы вы рассказать мне, с какими проблемами я должен быть подготовлен, чем вы столкнулись, особенно при работе с этими ActiveX и COM-перехватами?Что следует учитывать при подписании сильного имени управляемого приложения?

Решение для этого приложения большое. Он состоит из 50+ проектов управляемого C#, Vb.net, родного C++ и управляемого C++/CLI. Поэтому, чем больше информации, рассказов о реальной жизни вы даете, тем лучше я могу подготовиться и избавиться от головной боли.

Спасибо.

ответ

1

У меня нет реального опыта с этим видом визуального студийного решения. Но я надеюсь, что информация here и here могут дать вам некоторые идеи для ваших компонентов взаимодействия.

1

Существует действительно ничего проблемного, кроме надежного хранения файла .snk.

Помните, что каждая сторонняя сборка, в которой будут использоваться ваши сборки, будет иметь ключ от ваших assmeblies, упомянутых внутри зависимостей, и каждый раз, когда он загрузит вашу сборку, он проверит, будет ли загруженная сборка еще подписана с этим ключом. Это делается для предотвращения неправильной сборки вашей сборки с помощью какого-либо вредоносного кода.

Это означает, что, если вы не сохранили файл .snk, используемый для подписания версии вашей сборки, вы не сможете отправлять новые версии, не заставляя пользователей повторно добавлять ссылки. Поэтому сохраните файл .snk и используйте тот же файл для каждой версии любой данной сборки. Используете ли вы разные файлы .snk для разных сборок или один для всех, это не имеет особого значения, поэтому достаточно одного .snk на компанию.

См. this question и this perfect answer для получения более подробной информации об этом.

+0

Именно по этой причине я хочу прочно назвать приложение. Тем не менее, я хотел бы знать о скрытых осложнениях с архитектурой приложения и структурой нашего большого решения VS. Благодарю. – tranmq

1

У меня пока не возникло вопросов, связанных с сильными именами (также с использованием сборок COM-соединений). Если у вас есть сторонняя сборка, у которой нет сильного имени, вы можете опубликовать ее самостоятельно, позволяя сделать все сборки сильными.

Разумеется, при создании сильной именованной группы взаимодействий не будут защищаться базовые COM-библиотеки DLL, которые необходимо изменить или заменить, так что «защита» от сильного имени на самом деле не распространяется на COM-компоненты, даже если Interop-сборка сильно названа.

+0

Использовали ли вы tlbimp.exe или aximp.exe, чтобы подписывать сборки ссылок и ссылаться на них? Причина, о которой я прошу, заключается в том, что один из наших проектов ссылается на COM-компонент, используя VS, и получает сборку interop, сгенерированную бесплатно. Благодарю. – tranmq

+0

Я использовал TlbImp, а также пост-подписанные сборки с ILMerge в прошлом. Я не являюсь поклонником автоматической обработки SNK, выполняемой VS, поскольку для этого файл ключа должен присутствовать физически на компьютере. В нашей среде у нас есть ключи, хранящиеся в контейнере ключей, поэтому не требуется, чтобы у кого-то было несколько копий ключа. – Lucero

 Смежные вопросы

  • Нет связанных вопросов^_^