Я создал тестовый проект, выход которого будет иметь строгое имя сборки. Я указал имя файла SNK в разделе «проект -> свойства -> Подписание», чтобы сборка имела строгое имя. Я добавил ссылку на сборку, которая НЕ подписана или строго названа. Я ожидал, что мой проект вообще не будет собран, так как он ссылается на неподписанную сборку. Тем не менее, он построен, и я мог бы также установить сборку в GAC! Почему это так? (Я использую .NEt 4.0, и это gacutil.exe) Примечание. Я убедился, что сборка, на которую ссылаются, НЕ имеет строгого имени.
Могу ли я программно загрузить сборку «unsigned» (то есть не с сильным именем) в мою программу, чей вывод будет сборкой со строгим именем? Если да, почему это разрешено делать, если, с другой стороны, .NET не позволяет добавлять ссылки на неподписанные сборки?
Если у меня есть несколько версий одной и той же сборки в GAC. В моем файле конфигурации, если я укажу только название сборки, какая версия будет загружена из GAC? Это будет последняя версия каждый раз? Какой API будет полезен? Я нашел много методов, помеченных как «устаревшие» в Assembly классе.
Assembly
Вы можете ссылаться на неподписанную сборку в VS.Net из подписанной сборки. Но если вы вызываете что-либо от подписанного до неподписанного, сборка завершится неудачей.
Нет проблем в подписанной сборке, ссылающейся на неподписанную сборку. Это можно сделать и подписать сборку можно GACed.
Да, вы можете загрузить.
Как вы можете указать сборку только по имени? Существует только один API LoadWithPartialName, и это устарело по многим причинам. Вам нужен токен версии, культура и открытый ключ для уникальной идентификации сборки.