0

在 Windows 8 消费者预览版上使用 Visual Studio 11 测试版。

问题是:如果尝试使用输出类型设置为 WinMD 的类库中的类,我会收到一个安全异常,指出“强名称验证”失败(来自 HRESULT 的异常:0x8013141A)。我只是想使用 Visual Studio 运行(F5)一个小型测试应用程序。

如果我将输出类型设置为“类库”,问题就会消失。可以在此处找到一个小型(且相当琐碎)的测试项目:

http://download.tallcomponents.com/WinRTApplication3.zip

我使用新生成的 .snk 文件(无密码)为类库设置了“签署程序集”标志。在生成的 ClassLibrary1.winmd 文件上运行 sn -vf 显示:

ClassLibrary1.winmd 是延迟签名或测试签名的程序集

所以也许问题基本上是输出没有“正确”签名?我只是不知道该怎么做才能解决这个问题,因为我已经指定了要签名的类库,我也不明白为什么只有在输出到 WinMD 文件时才会发生这种情况。我假设此时我不需要仅用于调试和测试的“官方”证书。

好吧,如果这是一个初学者问题,我很抱歉。我试图“谷歌”一个答案,但我主要得到了超过 2 年的点击率,谷歌建议“风”而不是 winmd……</p>

甚至不能在这里创建一个新标签“winmd”……(声望不够)

4

1 回答 1

1

如果您在 winmd 文件上遇到强名称验证错误,这通常是因为您使用的工具集不理解 .winmd 文件格式。

.winmd 文件不能进行强名称签名。

在这种情况下,问题可能是因为您尝试对组件库进行强名称签名 - C# 组件库生成包含 Windows 元数据和 C# IL 的混合 .winmd 文件。

为什么要对组件进行强名称签名?强名称签名主要用于将程序集放入 GAC 并且无法将 .winmd 文件插入 GAC 时。

于 2012-05-15T05:00:21.200 回答