【问题标题】:'Microsoft.AspNet.Http' does not have a strong name“Microsoft.AspNet.Http”没有强名称
【发布时间】:2015-04-05 19:51:03
【问题描述】:

2015 年 11 月 17 日更新

似乎 vNext 程序集 (Microsoft.AspNet) 现在已签名(具有强名称)。

在 GitHub 上查看以下线程:

Assemblies are now strong named #109


我想创建一个数字签名程序集,它将使用在其中一个 vNext 程序集中实现的类型。此时,vNext 程序集没有强名称属性。因此,在构建解决方案时出现以下错误:

“程序集生成失败 -- 引用的程序集 'Microsoft.AspNet.Http' 没有强名称”

此行为是否为已知问题(例如,与 VS2015 CTP 相关)?未来会改变吗?推荐的操作方式是什么?

【问题讨论】:

  • 虽然我在下面回答了一个具体问题,但了解为什么要对 DLL 进行强名称签名可能会有所帮助。

标签: class-library strongname asp.net-core


【解决方案1】:

2015 年 11 月 17 日更新

正如 Mikhail 所指出的,几乎所有属于 DNX 1、ASP.NET 5 和 EF 7 的程序集都具有强名称签名。

他们都使用 签入到 repo 的私钥,因此任何人都可以使用相同的强名称密钥构建相同的 DLL。没有“延迟标志”或“测试标志”过程。


原帖 2015-02-11

目前没有计划对 ASP.NET 5 中的所有 DLL 进行强名称签名。(来源:我从事该项目。)

由于强名称是“病毒”(强名称签名程序集必须仅引用其他强名称签名程序集),这意味着您不能对任何依赖于 ASP.NET 5 的程序集进行强名称。

【讨论】:

  • 我要将带有 ASP.NET 组件的现有签名程序集移植到 vNext 环境。为此,我正在创建一个新程序集,它引用我现有的程序集并使用在其中一个 vNext 程序集中实现的类型。因此,我将不得不签署新创建的程序集和引用的 vNext 程序集。我是否可以从 EULA 的角度来做(即创建和分发我的任何 vNext 程序集的构建和签名版本)?完成任务的推荐方法是什么?
  • 如果您从源代码构建,它是普通的旧 Apache 2.0,它让您几乎可以用代码做任何您想做的事情。要添加强名称,无论如何您都必须重新编译以放入公钥。话虽如此,我们正在研究在程序集上放置一些任意强名称的可能性,以帮助遇到您这种情况的人。我个人不建议为您不拥有的 DLL 添加强名称,因为这会改变其身份,这意味着任何其他尝试使用该 DLL 的人也将无法工作。
  • 似乎 vNext 程序集 (Microsoft.AspNet) 现在已签名(具有强名称)。检查 GitHub 上的以下线程:github.com/aspnet/Announcements/issues/109 我已相应更新了我的帖子。
  • @Mikhail 谢谢,我更新了我的答案以反映这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多