Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net “装配”;签名不正确。”;警告_.net_.net 2.0_Assemblies_Code Signing - Fatal编程技术网

.net “装配”;签名不正确。”;警告

.net “装配”;签名不正确。”;警告,.net,.net-2.0,assemblies,code-signing,.net,.net 2.0,Assemblies,Code Signing,我有一个移动.NET解决方案,并决定签署程序集。 编译完成时没有出现错误,但给出了警告 “CompactUI.Business.PocketPC.asmmeta,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”未正确签名。 应用程序运行良好,但我无法再使用此程序集打开窗体设计器。设计师又说 “CompactUI.Business.PocketPC.asmmeta,Version=1.0.0.0,Culture=neutral,PublicK

我有一个移动.NET解决方案,并决定签署程序集。 编译完成时没有出现错误,但给出了警告

“CompactUI.Business.PocketPC.asmmeta,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”未正确签名。

应用程序运行良好,但我无法再使用此程序集打开窗体设计器。设计师又说

“CompactUI.Business.PocketPC.asmmeta,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”未正确签名。

使用堆栈信息:

位于Microsoft.CompactFramework.Build.AsmmetaBindingService.GetAsmmetaAssembly(字符串sourceAssemblyPath,布尔验证) 在Microsoft.CompactFramework.Build.AsmmetaBindingService.LoadAsmMetaAssembly(程序集sourceAssembly、字符串hintPath、iDeviceTypeSolutionService解析程序)中 位于Microsoft.CompactFramework.Build.MetadataService.GetAsmmetaType(类型sourceType) 位于Microsoft.CompactFramework.Build.MetadataService.GetTypeAttributes(类型desktopType) 在Microsoft.CompactFramework.Design.DeviceCustomTypeDescriptor.GetAttributes()中

这是什么原因造成的

编辑:尼古拉斯的建议无法解决问题

我有一个表单,它包含公共属性,这是表示层中每个表单的基础

public class CustomForm : Form
{
    ...
}

此表单位于导致警告的业务层中。在设计器中查看时,从该基本表单继承的每个表单都会导致问题。

我很困惑,您说您对该组合进行了签名,但您的公钥标记为null,如果您对该组合进行了签名,则应指定生成的公钥,而不是null。也许我没有完全理解这个问题。尝试删除对CompactUI.Business.PocketPC.asmmeta的引用,并重新添加签名版本。

验证程序集不是在设置“延迟符号”的情况下生成的。这将导致程序集在只有
null
占位符的情况下公布其已签名。这将导致强名称验证失败。有关更多信息,您也可以查看MSDN上的此页:“

原因”

程序集未使用强名称签名,无法验证强名称,或者如果没有计算机的当前注册表设置,强名称将无效。 规则描述

此规则检索并验证程序集的强名称。如果以下任何一项为真,则会发生冲突:

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

请注意,要加载和分析延迟签名程序集,必须禁用该程序集的验证。

CompactUI.Business是我的业务层程序集。没有对CompactUI.Business.PocketPC.asmmeta程序集的引用。我不知道这是从哪里来的。