2017-08-18 9 views
2

Ich baue eine .NET Core 2.0-Bibliothek von IL. Ich habe früher genau das gleiche für .NET Core 1.0/1.1 ohne Probleme gemacht. Das gleiche funktioniert jedoch nicht für .NET Core 2.0 dll.Ilasm.exe injiziert mscorlib-Abhängigkeit in .NET Standard 2.0 dll

Nach dem Ausführen dieses:

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 

Ich bekomme diese Warnung:

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

Als Ergebnis mscorlib erscheint als Abhängigkeit in der output.dll (und I don‘ Ich will, dass es da ist). versuchte

// 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' 
{ 
... 

I:

Im input.dll.il (und res zu Datei) wird mscorlib nicht (nie erscheint diese in der Datei, ich doppelt geprüft mscorlib string) überhaupt erwähnt Kopieren Sie netstandard.dll im Arbeitsordner ohne Auswirkung. Vielleicht wird mit .NET Core 2.0 eine spezielle Version von ilasm.exe benötigt? Ich benutze die von .NET Framework 4.5, da ich in .NET Core 2.0 SDK keine ilasm gefunden habe (vielleicht suche ich an falschen Stellen). Oder was könnte sonst der Grund sein?

Der einzige Unterschied für .NET Core 1.0 (was gut funktionierte) war, dass .assembly extern 'netstandard'.assembly extern 'System.Runtime' war.

+2

wie eine ziemlich grundlegende Frage Sieht jetzt ohne Bugfix früher zu jeder Zeit erwartet als v2.1. Wenn, dann. 2.0 ist nur verfügbar, es wurde noch nicht ausreichend debugged. Fwiw: Mit einer harten Abhängigkeit von Sachen, die nur auf Windows-Desktops nutzbar sind, bekommt man keinen wirklichen Meilenstand aus dem Netstandard. –

+0

Danke .. Wie für Registry dep, ist es nicht kritisch dort. Die Bibliothek funktioniert immer noch auf anderen Plattformen, nur mit einer eingeschränkten Funktionalität. – Alex

Antwort

2

Es ist ein verwandtes Problem für den .NET-Core-ilasm (die vermutlich aus dem vollen Rahmen des gegabelte wurde): https://github.com/dotnet/coreclr/issues/10590

+0

Danke. Versuchte ihren ". Assembly extern netstandard als mscorlib" Vorschlag, aber er änderte gerade die Fehlermeldung zum "Verweis auf nicht deklarierten externen Versammlung 'netstandard'. Versuch, automatisch zu erkennen". – Alex

Verwandte Themen