Сборка "не подписана правильно". Предупреждение - PullRequest
4 голосов
/ 17 октября 2008

У меня есть мобильное решение .NET и я решил подписать сборки. Компиляция завершается без ошибок, но выдает предупреждение

'CompactUI.Business.PocketPC.asmmeta, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null' подписана неправильно.

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

'CompactUI.Business.PocketPC.asmmeta, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = ноль' подписана неправильно.

с информацией о стеке:

в Microsoft.CompactFramework.Build.AsmmetaBindingService.GetAsmmetaAssembly (String sourceAssemblyPath, логическое подтверждение) в Microsoft.CompactFramework.Build.AsmmetaBindingService.LoadAsmMetaAssembly (Assembly sourceAssembly, String hintPath, IDeviceTypeResolutionService resolver) в Microsoft.CompactFramework.Build.MetadataService.GetAsmmetaType (Type sourceType) в Microsoft.CompactFramework.Build.MetadataService.GetTypeAttributes (Тип desktopType) в Microsoft.CompactFramework.Design.DeviceCustomTypeDescriptor.GetAttributes () ...

Что вызывает это?

Редактировать: предложение Николая не решает проблему

У меня есть форма, которая содержит общие свойства, которые являются базовыми для каждой формы на уровне представления

public class CustomForm : Form
{
    ...
}

Эта форма находится на бизнес-уровне, который вызывает предупреждение. Каждая форма, которая наследуется от этой базовой формы, вызывает проблемы при просмотре в конструкторе.

Ответы [ 3 ]

1 голос
/ 22 октября 2008

Убедитесь, что сборка не была создана с установленным «знаком задержки». Это может привести к тому, что сборка объявит, что она подписана, когда вместо нее используется только заполнитель null. Это приведет к сбою проверки строгого имени. Для получения дополнительной информации вы также можете проверить эту страницу на MSDN: " Сборки должны иметь действительные строгие имена "

0 голосов
/ 22 октября 2008

Причина

Сборка не подписана строгим именем, строгое имя не может быть проверено или строгое имя не будет действительным без текущих параметров реестра компьютера. Описание правила

Это правило извлекает и проверяет строгое имя сборки. Нарушение происходит, если выполняется одно из следующих условий:

* The assembly does not have a strong name.

* The assembly was altered after signing.

* The assembly is delay-signed.

* The assembly was incorrectly signed, or signing failed.

* The assembly requires registry settings to pass verification. For example, the Strong Name tool (Sn.exe) was used to skip verification for the assembly.

Строгое имя защищает клиентов от неосознанной загрузки сборки, которая была подделана. Сборки без строгих имен не следует развертывать вне очень ограниченных сценариев. Если вы публикуете или распространяете сборки с неправильной подписью, сборка может быть подделана, общеязыковая среда выполнения может не загрузить сборку или пользователю может потребоваться отключить проверку на своем компьютере. Сборка без строгого имени имеет следующие недостатки:

* Its origins cannot be verified.

* The common language runtime cannot warn users if the contents of the assembly have been altered.

* It cannot be loaded into the global assembly cache.

Обратите внимание, что для загрузки и анализа сборки с подписью с задержкой необходимо отключить проверку сборки.

0 голосов
/ 21 октября 2008

Я в замешательстве, вы говорите, что вы подписали ассемблеры, но ваш токен открытого ключа имеет значение null, если вы подписали этот ассемблер, вам следует указать открытый ключ, который генерируется вместо null. Может быть, я не полностью понимаю проблему. Попробуйте удалить ссылку на CompactUI.Business.PocketPC.asmmeta и повторно добавить подписанную версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...