我正在从 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'
.