2017-08-18 22 views
2

ILから.NET Core 2.0ライブラリを構築しています。 .NET Core 1.0/1.1ではこれまでと全く同じように問題は発生しませんでした。しかし、.NET Core 2.0 dllでは同じことはできません。Ilasm.exeは.NET Standard 2.0 DLLにmscorlib依存関係を挿入します

これを実行した後:

結果

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

mscorlibはoutput.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 

私はこの警告を取得していますそれがそこに存在することを望みません)。 input.dll.ilで

(および解像度があまりにもファイル)、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 2.0 SDKでilasmを見つけられなかったため、.NET Framework 4.5のものを使用しています(間違った場所で検索しているかもしれません)。それ以外の理由は何でしょうか?

.NET Core 1.0の唯一の相違点は、.assembly extern 'netstandard'.assembly extern 'System.Runtime'だったことです。

+2

が今何のバグ修正がいつでも早くV2.1よりも期待しないで、かなり基本的な問題のように見えます。それで。 2.0は単なる利用可能で、まだ十分にデバッグされていません。 Fwiw:Windowsデスクトップでしか使えないものに強く依存しているので、ネットスタンダードから本当のマイレージを得ることはできません。 –

+0

ありがとう..レジストリdepについては、そこには重要ではない。ライブラリは他のプラットフォームでも動作しますが、機能は限られています。 – Alex

答えて

2

.NETコアILASMのための関連問題があります(おそらくからフォークされた完全なフレームワークの):https://github.com/dotnet/coreclr/issues/10590

+0

ありがとうございます。彼らの ".assembly extern netstandard as mscorlib"の提案を試みましたが、エラーメッセージを "宣言されていないextern assembly 'netstandard'への参照に変更しました。 – Alex

関連する問題