问题标签 [publickeytoken]
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.
c# - Visual Studio 正在寻找没有 publicKeyToken 的旧 Nuget 包
我的项目中有一个 Nuget 包,该包以前未签名并且没有强名称。
我已经发布了一个新版本的包,现在已经签名了。
当我将我的 Nuget 包的新版本添加到我的解决方案中时,项目中任何引用来自 Nuget 包的程序集的位置都会导致以下构建错误:
错误 CS0012 类型“JsonWebToken”在未引用的程序集中定义。您必须添加对程序集“TSC.Business.DataContracts,Version=2.10.6.0,Culture=neutral,PublicKeyToken=null”的引用。
正如你所看到的,编译器仍然期待一个没有 PublicKeyToken 的程序集版本。
我需要尝试确定为什么编译器仍然期望这个包的 publicKeyToken 为空。
我尝试过的事情 - 都没有运气:
通过从 packages.json、包目录、csproj 文件、bin 路径中删除旧版本并运行完全清理来完全卸载旧的 Nuget 包。
在 packages.json 中验证新版本的 publicKeyToken 是否正确 - 它是
清除我的临时 ASP.Net 文件
哎呀,甚至安装VS2019并检查那里是否存在问题-确实如此
有谁知道编译器还能在哪里寻找这个空的 publicKeyToken?
c# - 使用特定的 PublicKeyToken 创建 pfx 证书
我丢失了我的 pfx 证书文件,我在问自己是否可以使用特定的 PublicKeyToken 创建一个新文件。
有可能这样做吗?
谢谢
c# - Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
I've already been through this answer on S.O. but it really doesn't seem to solve my issue - this is not a complex multi-project web solution.. it's much smaller and doesn't really need binding redirects as there aren't multiple projects vying for the same DLL reference.
For the project in question: we own the source code, we have the Visual Studio Project files, the DLLs in question here are wholly owned and wholly known.. we have access to the history of the code in SVN.
In short, I wanted to upgrade a DLL that we once-upon-a-time would drop into another project, manually.. I want to turn it into a NuGet on our private feed. I've done this a hundred times.. no big deal.
The DLL is a fairly simple .NET 4 framework code and has no other dependencies
But when I 'nugetize' the project and then reference it in another project, it cannot be 'found' successfully at run time. I get this error when we go to invoke the class contained within it:
Could not load file or assembly 'MyCorp.DataAccessLayer, Version=1.3.0.0, Culture=neutral, PublicKeyToken=e5ee1faf2523c727' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
If I go into debug mode, visual studio shows this in the FusionLog
property of the error intellisense:
What do I need to look at to pinpoint the problem?
code-signing - 从 pfx 文件计算公钥令牌
我想从 pfx 文件中计算公钥令牌,并确保它与签名程序集的公钥令牌匹配,但我一直遇到以下问题,并希望获得有关如何修复它的帮助。
在签名的程序集中,我使用以下代码获取公钥和公钥令牌:
结果如下:
如果我使用上面提到的公钥的值,我可以自己在 Powershell 中重新计算公钥令牌:
输出是:
0C-C2-5B-D7-34-42-06-3D
现在,如果我使用我用来签署上述程序集的 pfx 文件,我似乎无法获得相同的公钥值。这是我设法来的最接近的:
这将产生以下公钥:
正如你所看到的,它在两个字节上有所不同,看起来像是一个标题。(开头的A4。)
00- A4 -00-00-04-80-00-00-94-00-00-00-06-02-00-00-00- A4 -00-00-...
我用几个不同的键试过这个。因为公钥令牌是一个哈希,所以它阻止我计算和比较两个公钥令牌。
我该如何纠正这个问题,你知道这些值的含义吗?
c# - 使用相同的 dll 库,但版本不同(都具有相同的 PublicKeyToken)
我想使用相同的库,但使用相同程序的不同版本。我遵循了这个问题中的解释,但在我的情况下,PublicKeyToken 是相同的:
我正在使用库 Siemens.Ingenieering.dll。我想使用版本 15 和版本 16。我已经为这两个库创建了 extern 别名:
我用别名引用每个对象,例如:
这段代码起初没有显示任何错误。但是当我执行它时,它只适用于第一个库(V15)中的对象,它不适用于另一个库(V16)。以下错误显示:
System.TypeLoadException:“无法加载程序集“Siemens.Engineering.Contract,Version=1500.0.2601.1,Culture=neutral,PublicKeyToken=37a18b206f7724a6”中的类型“Siemens.Engineering.Loader.IAppSupport”。”
这是我的 App.config:
此警告还显示:
严重性代码描述项目文件行抑制状态警告“Siemens.Engineering, Version=16.0.0.0, Culture=neutral, PublicKeyToken=d29ec89bac048f84”和“Siemens.Engineering, Version=15.0.0.0, Culture=neutral, PublicKeyToken=d29ec89bac048f84”之间的冲突"无法解决。随机选择“Siemens.Engineering, Version=16.0.0.0, Culture=neutral, PublicKeyToken=d29ec89bac048f84”。
我已经尝试创建一个新类来使用每个库。
我认为程序失败是因为相同的令牌,所以它只读取其中一个。但我不知道如何解决它。
我最近开始使用 c# 语言,所以我非常感谢任何帮助:)
mono.cecil - 为什么 PublicKeyToken 改变了?
我发现,自从 v a改变以来,我试图将 bindingRedirect from Mono.Cecil
v 0.9.5
to 。0.10.0
0.10.0
PublicKeyToken
v 0.9.5
, 0.9.6
(& 可能还有其他的 < 0.10.0
) 有PublicKeyToken
- 0738eb9f132ed756
因为 v0.10.0
等等(包括0.11.3.0
例如)PublicKeyToken
- 50cebf1cceb9d05e
它破坏了 bindingRedirect,原因是“ PublicKeyToken mismatch ”。
我想知道,为什么它会改变(在这种情况下或一般情况下 - 为什么开发人员会改变PublicKeyToken
他们的产品)?是否打算强调版本不兼容?