我有一个服务器可执行文件与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接口的程序集,但也引用了一个程序集,它引用了另一个程序集,每个程序集都用不同的密钥签名.我尝试加载时会发生什么?他们都应该用同一把钥匙签名吗?
我有一个使用自定义.NET库(.DLL文件)的ASP.NET应用程序.该.DLL文件名称很强.该库经常有小的更新,我希望能够在不重新编译应用程序的情况下更新此.DLL.该应用程序必须进行预编译,因为我不想将它的来源提供给我的客户(不是它不能被反编译,但除此之外).
这可以以某种方式完成吗?目前我只是得到一个错误,.DLL是错误的版本.
我无法导入程序集,据说是因为强名称验证失败,尽管即使我注册了不检查的程序集,也会发生这种情况。有人可以发现我在这里做错了吗?
以下是抄录。作为参考,sn.exe 的开关是:
-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
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
这是场景...我在远程计算机上部署了一个 dll,该计算机具有所需的 .NET 框架,但没有 Visual Studio 和工具。同一天,我为 dll 创建了 3 个具有不同强名称的版本。我需要验证远程计算机上的强名称,但我没有机会获得该 dll 的副本。如果远程计算机上没有 SDK,我该如何执行此操作?
现在看来vNext程序集(Microsoft.AspNet)已签名(具有强名称).
检查GitHub上的以下线程:
我想创建一个数字签名程序集,它将使用其中一个vNext程序集中实现的类型.此时,vNext程序集没有强名称属性.因此,构建解决方案时会发生以下错误:
"程序集生成失败 - 引用程序集'Microsoft.AspNet.Http'没有强名称"
此行为是否已知(例如,与VS2015 CTP相关)?它将来会改变吗?建议的方法是什么?
假设我有多个 .NET 程序集,并希望使用强名称对每个程序集进行签名。一个密钥对(一个 .snk 文件)是否足够,还是我需要为每个程序集生成一对?我是否必须发布(每个)密钥对的公钥?
我不小心删除了PFX文件.现在我想知道如何再次创建PFX文件.
strongname ×7
.net ×5
c# ×2
asp.net ×1
asp.net-core ×1
assemblies ×1
key ×1
pfx ×1
plugins ×1
sn.exe ×1