Quantcast
Viewing all articles
Browse latest Browse all 104

.NetCoreから.NetFrameworkのdllを普通に参照できた・・・

え?これって常識だったの?僕が知らんかっただけ?

きっかけはこのブログ

qiita.com
えーと、.NetCore3でWinFormsとかWPFつくるコマンドってどうだったけなー。って感じでググってたら、こんなブログがありました。サーとみてると、「.NET Frameworkライブラリの使用」ってのがありました。えええ?どういうこと?なんでそんなことできんの?だって、objectクラスの実装されているdll別々やで・・・

あ...ありのまま 今 起こった事を話すぜ

な… 何を言っているのか わからねーと思うが 
おれも 何をされたのか わからなかった…
↑書きたかっただけ。

とりあえず、WinFormsでCore3.0とFrameworkのexe作りました。

Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20190302164246p:plain

両方ともWinFormsのアプリですね。
こんなコードを入れて、objectとFormの入ってるアセンブリのパスを表示させてます。

var text = new TextBox { Multiline = true, Dock = DockStyle.Fill };
text.Text = string.Join(Environment.NewLine, new[]
{
    typeof(object).Assembly.Location,
    GetType().BaseType.Assembly.Location
});
Controls.Add(text);

Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20190302164548p:plain

C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll
C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll

Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20190302164527p:plain

C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.0.0-preview-27122-01\System.Private.CoreLib.dll
C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\3.0.0-alpha-27128-4\System.Windows.Forms.dll

ここまでは、あたり前な話。.NetFrameworkはMicrosoft.NET以下、Core3.0はdotnet以下のアセンブリを参照してますね。

.NetCoreから.NetFrameworkのアセンブリを参照

え?マジで?普通にできたよ。これって常識やったの?
Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20190302165620p:plain

これ実行したらどうなるの?
ってことで、Core3.0のexeからFrameworkのFormを呼び出してみました。

//これはCore3.0のWinFormspublicpartialclass CoreForm : Form
{
    public CoreForm()
    {
        InitializeComponent();

        Text = "DotNetCore3";

        var text = new TextBox { Multiline = true, Dock = DockStyle.Fill };
        text.Text = string.Join(Environment.NewLine, new[]
        {
            typeof(object).Assembly.Location,
            GetType().BaseType.Assembly.Location
        });
        Controls.Add(text);

        var button = new Button { Text = "Show Framework", Dock = DockStyle.Bottom};
        button.Click += (_, __) => 
        {
            //FrameworkのFormを呼び出しusing (var framework = new FrameworkForm())
            {
                framework.ShowDialog();
            }
        };
        Controls.Add(button);
    }
}

.NetFrameworkのFormのアセンブリの参照がDotNetCoreの方に変わった!

Image may be NSFW.
Clik here to view.
f:id:ishikawa-tatsuya:20190302170157p:plain

これって実質.NetStandardなのでは?

これって正式仕様なの?よくわかんないなー。


Viewing all articles
Browse latest Browse all 104

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>