标签: strongname

具有强名称的C#插件架构:一种误解

我有一个服务器可执行文件与Active Directory对话以检索用户信息.除了AD之外,这个exe还允许客户编写自己的插件来与自定义用户目录进行通信.

此可执行文件名称很强.

以下是真实的陈述:

为了使强名称程序集加载另一个程序集,加载的程序集也必须使用相同的键进行签名.

如果程序集没有强签名,则以下代码返回null,没有错误指示程序集未正确签名.请注意,如果我对程序集进行签名,我会得到一个IService实例.这让我相信加载的程序集必须是强签名的.

Assembly assembly = Assembly.LoadFrom(path);

foreach (Type t in assembly.GetTypes())
{
    if (t.GetInterface(typeof(IService).FullName) != null)
    {
      return (Activator.CreateInstance(t) as IService);
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,这是否意味着如果你有一个强签名的程序集和支持程序集插件,它们也必须签名 - 插件编写者必须使用相同的密钥签名?这听起来不对.

最后,假设我有一个实现IService接口的程序集,但也引用了一个程序集,它引用了另一个程序集,每个程序集都用不同的密钥签名.我尝试加载时会发生什么?他们都应该用同一把钥匙签名吗?

c# plugins strongname assemblies key

3
推荐指数
1
解决办法
2215
查看次数

如何告诉我的ASP.NET应用程序使用任何版本的强命名程序集?

我有一个使用自定义.NET库(.DLL文件)的ASP.NET应用程序.该.DLL文件名称很强.该库经常有小的更新,我希望能够在不重新编译应用程序的情况下更新此.DLL.该应用程序必须进行预编译,因为我不想将它的来源提供给我的客户(不是它不能被反编译,但除此之外).

这可以以某种方式完成吗?目前我只是得到一个错误,.DLL是错误的版本.

.net asp.net strongname

2
推荐指数
1
解决办法
393
查看次数

导入模块上的强名称验证失败

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

以下是抄录。作为参考,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
      • FullQualifiedErrorId : 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 : …

.net strongname sn.exe import-module

2
推荐指数
1
解决办法
5750
查看次数

检查部署计算机上 .net 程序集的强名称

这是场景...我在远程计算机上部署了一个 dll,该计算机具有所需的 .NET 框架,但没有 Visual Studio 和工具。同一天,我为 dll 创建了 3 个具有不同强名称的版本。我需要验证远程计算机上的强名称,但我没有机会获得该 dll 的副本。如果远程计算机上没有 SDK,我该如何执行此操作?

.net strongname .net-assembly

2
推荐指数
1
解决办法
1371
查看次数

'Microsoft.AspNet.Http'没有强名称

更新2015-11-17

现在看来vNext程序集(Microsoft.AspNet)已签名(具有强名称).

检查GitHub上的以下线程:

大会现在名为#109


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

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

此行为是否已知(例如,与VS2015 CTP相关)?它将来会改变吗?建议的方法是什么?

strongname class-library asp.net-core

2
推荐指数
1
解决办法
387
查看次数

我需要多少个 .snk 文件?

假设我有多个 .NET 程序集,并希望使用强名称对每个程序集进行签名。一个密钥对(一个 .snk 文件)是否足够,还是我需要为每个程序集生成一对?我是否必须发布(每个)密钥对的公钥?

.net strongname

1
推荐指数
1
解决办法
739
查看次数

在C#解决方案中创建PFX文件

我不小心删除了PFX文件.现在我想知道如何再次创建PFX文件.

.net c# strongname pfx visual-studio

1
推荐指数
1
解决办法
2万
查看次数