2008-10-17 3 views
4

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

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

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

'CompactUI.Business.PocketPC.asmmeta, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' не подписан правильно.

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

в Microsoft.CompactFramework.Build.AsmmetaBindingService.GetAsmmetaAssembly (String sourceAssemblyPath, Boolean проверки) на Microsoft.CompactFramework.Build.AsmmetaBindingService.LoadAsmMetaAssembly (Ассамблеи sourceAssembly, струнного hintPath, IDeviceTypeResolutionService распознаватель) в Microsoft.CompactFramework.Build.MetadataService.GetAsmmetaType (тип SourceType) в Microsoft.CompactFramework.Build.MetadataService.GetTypeAttributes (тип desktopType) в Microsoft.CompactFramework.Design.DeviceCustomTypeDescriptor.GetAttributes() ...

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

Edit: Nicholas предложение не решает проблему

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

public class CustomForm : Form 
{ 
    ... 
} 

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

ответ

0

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

+0

CompactUI.Business - это мой бизнес-уровень. Нет ссылки на сборку CompactUI.Business.PocketPC.asmmeta. Я понятия не имею, откуда это взялось. – Tobias 2008-10-21 19:46:42

1

Убедитесь, что сборка не была создана с установленным знаком «delay sign». Это приведет к тому, что сборка будет объявлять, что она была подписана, когда вместо нее вместо этого стоит вместо null. Это приведет к сбою проверки имени сильного имени. Для получения дополнительной информации Вы также можете проверить эту страницу на MSDN: «Assemblies should have valid strong names»

-2

Причина

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

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

* 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. 

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

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