【问题标题】:Ilasm.exe injects mscorlib dependency in .NET Standard 2.0 dllIlasm.exe 在 .NET Standard 2.0 dll 中注入 mscorlib 依赖项
【发布时间】:2018-01-27 03:59:57
【问题描述】:

我正在从 IL 构建一个 .NET Core 2.0 库。我之前对 .NET Core 1.0/1.1 做了完全相同的操作,没有任何问题。但是,同样的事情不适用于 .NET Core 2.0 dll。

运行后:

C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe /OUTPUT=output.dll /nologo  /quiet /dll /resource=input.dll.res /ssver=6.0 input.dll.il

我收到此警告:

warning : Reference to undeclared extern assembly 'mscorlib'. Attempting autodetect

因此,mscorlib 确实在 output.dll 中显示为依赖项(我不希望它在那里)。

在 input.dll.il(还有 res 文件)中,根本没有提到 mscorlib(mscorlib 字符串从未出现在文件中,我仔细检查了这一点):

//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.6.1055.0
//  Copyright (c) Microsoft Corporation.  All rights reserved.

// Metadata version: v4.0.30319
.module extern 'advapi32'
.module extern 'kernel32'
.module extern 'Kernel32'
.module extern 'Ncrypt'
.module extern 'crypt32'
.module extern 'Crypt32'
.module extern 'secur32'
.assembly extern 'netstandard'
{
  .publickeytoken = (CC 7B 13 FF CD 2D DD 51 )                         // .{...-.Q
  .ver 2:0:0:0
}
.assembly extern 'Microsoft.Win32.Registry'
{
  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:
  .ver 4:1:0:0
}
.assembly 'MyLibrary'
{
...

我试图将 netstandard.dll 复制到工作文件夹中,但没有任何效果。也许使用 .NET Core 2.0 需要特殊版本的 ilasm.exe?我正在使用 .NET Framework 4.5 中的那个,因为我在 .NET Core 2.0 SDK 中没有找到任何 ilasm(也许我在错误的地方搜索)。或者还有什么原因?

.NET Core 1.0(运行良好)的唯一区别是 .assembly extern 'netstandard'.assembly extern 'System.Runtime'

【问题讨论】:

  • 现在看起来是一个非常基本的问题,预计不会比 v2.1 更早地修复任何错误。如果那时。 2.0只是可用的,它还没有被充分调试。 Fwiw:由于严重依赖只能在 Windows 桌面上使用的东西,你不会从 netstandard 中获得任何真正的好处。
  • 谢谢.. 至于注册表部门,那里并不重要。该库仍然可以在其他平台上运行,只是功能有限。

标签: .net-core ilasm


【解决方案1】:

.NET Core ilasm 存在一个相关问题(大概是从完整框架的分支中衍生出来的):https://github.com/dotnet/coreclr/issues/10590

【讨论】:

  • 谢谢。尝试了他们的“.assembly extern netstandard as mscorlib”建议,但它只是将错误消息更改为“Reference to undeclared extern assembly 'netstandard'。尝试自动检测”。
猜你喜欢
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2018-03-03
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 2020-12-20
相关资源
最近更新 更多