问题标签 [strongname]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
313 浏览

c# - dll的C#强命名,不检测修改

据我了解,强命名会创建一个程序集的加密哈希,该程序集用作加载 dll 的强名称。

我希望使用此功能来检测二进制文件的损坏,以通知用户该软件存在问题,他们需要重新安装它。

这适用于对二进制文件的一些更改,但是我发现修改二进制文件,尤其是二进制文件中的静态字符串,不会导致应用程序报告它无法找到适当强名称的 dll。

谁能向我解释一下程序集中的哪些数据用于创建强名称,以及为什么强命名并不总能检测到 dll 的修改?有没有办法强制它在强命名中包含附加信息?

有没有另一种方法可以检测二进制文件的损坏?

干杯

瑞安

0 投票
0 回答
488 浏览

clickonce - ClickOnce 强名称依赖项签名

我有一个有很多依赖 DLL 的 Windows 应用程序。当我发布此应用程序时,它会为其中一个 DLL 返回一个错误,必须对其进行强签名才能将其标记为先决条件。我该如何解决这个问题?

0 投票
1 回答
6819 浏览

.net - 从强名称文件中提取私钥?

正如标题所述,有人知道如何从 snk 文件中提取私钥吗?我们想使用 StrongName 中的私钥进行加密。我读到: http:
//msdn.microsoft.com/en-us/library/k5b5tt23 (VS.80) .aspx sn -o key.snk 将提取文件中存在的私钥/公钥,但是我试过了,它只是一个长的 CSV 格式的字符串,没有区分什么是私钥和什么是公钥。

0 投票
1 回答
15014 浏览

c# - snk 与代码签名证书

在我的组织中,我们使用具有强名称程序集的 snk 文件。我们自己生成 snk。

此外,我们在二进制文件上使用代码签名签名。我们从 Verisign 获得 pfx。

  • 这两个过程有什么区别?
  • snk 也没有从 Verisign 收到不是问题吗?
0 投票
8 回答
3730 浏览

.net - 用强名称签署我的程序集会阻止它工作

我的一位同事在 VB.net 中创建了一个程序集,用于通过 COM 互操作与 JScript 一起使用。该程序集过去运行良好,但我们对其进行了签名,现在它似乎只能在 Windows 7 机器上运行。我测试了 2 台 Windows 7 机器和 2 台 Windows Vista 机器。

当我们签署程序集并尝试在 JScript 中实例化 ActiveX 对象时,返回一个错误,没有消息,只有一个数字:

错误:
错误号:-2146234304

在谷歌上搜索错误号并没有返回太多。

如果我们从程序集中删除强名称,它就可以正常工作。关于可能是什么问题的任何想法?不确定它是否有所作为,但程序集正在编译并使用 VS 2010 签名。

0 投票
1 回答
5888 浏览

.net - Import-Module 上的强名称验证失败

我无法导入程序集,据说是因为强名称验证失败,尽管即使我将程序集注册为不被检查也会发生这种情况。有人能发现我在这里做错了吗?

以下是成绩单。作为参考,sn.exe 的开关是:

  • -v:验证签名。
  • -Vr:注册程序集以跳过验证。

    PS C:\temp> .\sn.exe -v .\my.dll

    Microsoft (R) .NET Framework 强名称实用程序版本 3.5.30729.1 版权所有 (c) Microsoft Corporation。版权所有。

    程序集 '.\my.dll' 有效

    PS C:\temp\Cmdlets> Import-Module .\my.dll Import-Module:无法加载文件或程序集'my,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其依赖项之一。强名称验证失败。(来自 HRESULT 的异常:0x8013141A)在 line:1 char:14

    • 导入模块 <<<< .\Microsoft.Rtc.Management.Core.dll
      • CategoryInfo : NotSpecified: (:) [Import-Module], FileLoadException
      • FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell .Commands.ImportModuleCommand

    PS C:\temp\Cmdlets> .\sn.exe -Vr *

    Microsoft (R) .NET Framework 强名称实用程序版本 3.5.30729.1 版权所有 (c) Microsoft Corporation。版权所有。

    为程序集 ' , '添加了验证条目

    PS C:\temp\Cmdlets> Import-Module .\my.dll Import-Module:无法加载文件或程序集'my,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'或其依赖项之一。强名称验证失败。(来自 HRESULT 的异常:0x8013141A)在 line:1 char:14

    • 导入模块 <<<< .\Microsoft.Rtc.Management.Core.dll
      • CategoryInfo : NotSpecified: (:) [Import-Module], FileLoadException
      • FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell .Commands.ImportModuleCommand

我应该提一下,我已经通过 Reflector 验证了所有必需的依赖程序集都存在于同一目录中。

0 投票
2 回答
193 浏览

c# - 在外部引用和存储强名称以供重用

我有很多程序集将InternalsVisibleToAttribute设置为指向同一解决方案中的一个特定程序集。不幸的是,被指向的程序集有一个强名称,所以我总是必须一遍又一遍地将相同的公钥令牌放入 AssemblyInfo.cs 文件中。由于 c# 中没有预编译器,我将如何理想地消除这种冗余。

0 投票
1 回答
657 浏览

.net - 使用 .snk 的私钥签署任意数据

我正在开发一个 .NET包管理器,让我想到的一件事是安全性。

鉴于任何人都可能将程序集上传到存储库,我如何验证所述程序集来自受信任的来源?例如,NHibernate.dll如果它是用来自 NHForge 的人的私钥签署的,我会更加信任。为了确保这一点,我所要做的就是使用 NHForges 的公钥验证程序集签名。

现在,考虑到这一点,如何建立这种关系(这个特定的公钥属于这个特定的人)?我想出的一个想法如下:

  • 项目作者创建一个 XML 文件,其中包含有关项目和作者的信息(姓名、电子邮件等)
  • 此 XML 文件使用从文件中提取的作者私钥进行签名,该.snk文件稍后用于对程序集本身进行签名
  • 作者将此签名的 XML 文件上传到存储库,在那里对其进行检查并建立作者和公钥之间的关系

为了实现这一点(这是一个可行的想法,顺便说一句?),我需要一种访问.snk文件和读取 PK 的编程方式。.NET 中是否有这方面的内容?

0 投票
1 回答
3856 浏览

managed-c++ - 托管 C++ 强名称/签名

如何使用 .pfx 文件签署托管 c++ dll?

或者有没有办法将未签名的托管 c++ dll 包含在已签名的 c# 项目中?我真的不需要签名的 dll 我只需要 VS 停止给我错误“引用的程序集 'SlimDX' 没有强名称。” 在我的 c# 项目中必须签名。

0 投票
2 回答
697 浏览

.net - 为什么我的 .NET 4 目标应用程序需要安装 2.0 才能运行?

我有一个非常复杂的 WPF 和 C++/CLI 应用程序,它是使用 .NET 3.5 构建的。我们已迁移到 4.0 以利用 WPF 的优势,因此我们在解决方案中的所有项目都针对 4.0。

在只有 4.0(和 MSVC++ 2010 [和 2008])的 XP 机器上运行我们的应用程序时,将弹出一个错误对话框并显示以下消息:

“要运行此应用程序,您首先必须安装以下 .NET 框架版本之一:2.0.50727”

如果我使用 .NET 4.0 安装 .NET 2.0,我的应用程序将运行。

任何人都知道如何调试加载程序集以了解发生了什么?

更新

我刚刚发现了 VS2010 中的“模块”窗口,并且在调试器中运行时还观察了输出窗口中的模块加载事件。我可以清楚地看到我的应用程序正在运行一个 .NET 2.0 模块。

有什么办法可以查看加载了什么?