9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

.NET Frameworkから.NET Coreに移行したくてもできない理由

.NET Coreとは

.NET CoreはMicrosoftが開発を進めているオープンソースの汎用開発フレームワークです。
11月に発表予定の.NET5のベースになるフレームワークです。

.NET Coreに移行するメリット

  • マルチプラットフォームに対応できる
  • 最新技術が早く実装される

.NETのCore問題点

  • .NET Frameworkとメソッド、クラスの構成が変わっている。
  • .NET CoreのFormアプリケーションでFormデザイナに対応していない
  • 実装されていない機能がある(実装する予定すらなくなっているものもある)

このように移行には問題があります
特に最後の実装されていない機能がある点について詳しく書いていこうと思います。

移行しようとしてみた

私は今自作言語をC#で開発しています。
そのため、マルチプラットフォームに対応していたほうが多くのメリットがあります。
なので.NET Frameworkで書いた動的コード生成のプログラムの構文を.NET Coreで書いてみました。

コードについてはこちらの記事を使いました。
これをコピペしたらこんな問題が発生しました。
スクリーンショット (38).png

エラーを一づつ見てみましょう

一つ目のエラー CS1061エラー

アセンブリ参照が不足しているという問題です。
これについてはAppDomainを対応しないといっていたので仕方ありません。
なのでGoogleで
DefineDynamicAssembly
と調べてみました。
するとこちらのサイト
AssemblyBuilder.DefineDynamicAssemblyメソッドを代わりに使えるようです。
これで一つ目のエラーは解消しました。

二つ目のエラー CS0117

これはAssemblyBuilderAccessにSaveがないということです。これについて調べるとこちらのサイトが見つかりました。
その結果残念なことがわかりました。
.NET CoreではRunとRunAndCollectしかありません。
つまり保存することができないのです

2020/5/5時点で.NET CoreのSystem.Reflection.Emitでは動的に実行ファイルの生成ができないということです。
これについてはどうすることもできません。

その他のエラー

そのほかのエラーは二つ目のエラーが原因となっているものと、
変数名の変更といった最悪消してしまってもよい機能ですので、割愛します。

最後に

このように.NET Coreは実装が終わったといっておりますが、実際には実装されていない機能があり.NET Frameworkでしかできないことがあります。
なので11月にリリースされる.NET5では実装されることを祈ります。
また、これを使うとできるよーって言う方法がありましたらコメントお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
9
Help us understand the problem. What are the problem?