VS2010 设计器找不到类型用户控件、具有清单和延迟签名的强名称程序集
本文关键字:延迟 程序集 强名称 找不到 类型 控件 用户 VS2010 | 更新日期: 2023-09-27 18:31:00
我在尝试打开 winforms 表单时得到这个。
找不到类型"MyCompany.MyControls.MyControl"。请确保包含此类型的程序集是 引用。如果此类型是开发项目的一部分,请使 确保已使用 您当前的平台或任何 CPU。
变量"导航控制"要么未声明,要么从未分配。
程序集使用"仅延迟符号"进行签名,因为我在生成后事件中包含带有 mt.exe 的清单。在这里,我还使用 sn.exe 重新签名程序集:
sn.exe -R "$(TargetPath)" "$(ProjectDir)key.snk"
如果我完全禁用程序集的签名,它可以工作。
还有其他方法可以做到这一点吗?我假设VS2010正在寻找使用错误的强名称或其他东西的DLL...
程序集已延迟签名。这意味着,它有一个签名,但该签名无效(仅在以后由构建服务器使用真实密钥构建时)。因此,在开发人员计算机上,签名无效,并且程序集未加载。
有两个选项:
1) 您根本不在开发人员计算机上登录。仅在生成服务器上登录。
或
2) 确保您的开发人员计算机将您的延迟签名密钥视为有效,尽管它不是。
无论如何,您都可以注册将验证的密钥。出于显而易见的原因,这只是开发机器!不要在生产机器上使用,否则您的整个签名概念将下降。
您需要检查 sn 的路径.exe在您的计算机上它可能有所不同:
"C:''Program Files (x86)''Microsoft SDKs''Windows''v8.0A''bin''NETFX 4.0 Tools''sn.exe" -vr *,YOURKEYHERE
"C:''Program Files (x86)''Microsoft SDKs''Windows''v8.0A''bin''NETFX 4.0 Tools''x64''sn.exe" -vr *,YOURKEYHERE
您需要以管理员身份运行这些命令并重新启动。
YOURKEYHERE 是程序集的公钥标记,当你这样做时,PublicKeyToken= 之后的部分:
Console.WriteLine(typeof(ATYPEOFYOURASSEMBLY).AssemblyQualifiedName);