首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确签名winmd文件?

如何正确签名winmd文件?
EN

Stack Overflow用户
提问于 2013-06-27 04:04:47
回答 1查看 208关注 0票数 1

我们正在发布一个已签名的Windows运行时组件。目前我们像这样给winmd签名:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe -R MyComponent.winmd mykeypair.snk

这在最坏的情况下需要硬编码的路径(假设您使用64位构建,并且恰好有v8.0A)..或者最多需要设置一个环境变量,然后才能进行构建

在Visual Studio中,Windows Runtime组件的Project页面上还有一个称为"Signing“的部分。但是,如果我选中签名框并选择适当的密钥文件,它将看起来工作正常,但不会被正确签名:

代码语言:javascript
复制
sn -vf MyComponent.winmd

Microsoft (R) .NET Framework Strong Name Utility  Version 4.0.30319.17929
Copyright (c) Microsoft Corporation.  All rights reserved.

MyComponent.winmd is a delay-signed or test-signed assembly

我找到了对此problemsome引用,但从未见过实际的错误报告或确认这是一个实际的问题。

我们希望发布已签名组件而不是未签名组件的原因是,我们希望我们的组件能够在其他强名称组件中使用。如果我们的组件是未签名的,这是不可能的。

这个问题有没有更好的解决方法,或者我做错了什么导致签名不能像我期望的那样工作?

EN

回答 1

Stack Overflow用户

发布于 2013-06-27 06:07:16

我最终编写了一个MSBuild目标来将它们组合在一起,以便它在编译后立即对WinMD文件进行签名。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="SignWinMD" AfterTargets="ExportWindowsMDFile" Condition="'$(Configuration)' == 'Release'">
    <Exec Command="&quot;$(SDK40ToolsPath)\sn.exe&quot; -R &quot;$(_IntermediateWindowsMetadataPath)&quot; $(AssemblyOriginatorKeyFile)" />
  </Target>
</Project>

只需将此代码添加到</project>标记之前的某个位置,即可将其包含在项目中

代码语言:javascript
复制
<Import Project="SignWinMD.targets" />

这样做之后,当使用Visual Studio中组件的project页面中的Signing菜单时,您的项目将得到正确的签名。注意:您必须有一个密钥设置才能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17329451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档