4

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

4

1 回答 1

2

.NET Core ilasm 有一个相关的问题(大概是从完整框架的分叉而来):https ://github.com/dotnet/coreclr/issues/10590

于 2017-08-18T13:00:48.753 回答