Skip to content
2014/06/29 / Azulean

.NET 2.0-3.5として作られたアプリを.NET 4ランタイムで動かせるか?

.NET 4からCLRが新しくなったことで、基本的に.NET 3.5で作られたアプリのプラグイン、アドインを.NET 4で作ることはできません。
これを回避するためにはいくつかの方法が考えられます。

  1. 対象アプリを.NET 4で動かす。
  2. .NET 3.5でプラグイン、アドインを作り、.NET 4のアプリと通信する。
  3. .NET 4で作ろうとしていた部分をネイティブ、COMで作って利用する。

まっとうな方法は2や3になるかと思いますが、.NET 4で無理矢理動かす方法を少し見てみましょう。

対象のアプリがhogehoge.exeだとすると、hogehoge.exe.configに以下のような記述を作ります。

<configuration>
   <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0"/>
   </startup>
</configuration>

参考URL:http://msdn.microsoft.com/ja-jp/library/jj152935(v=vs.110).aspx

これでたいていのアプリは.NET 4で動きます。
ただし、勝手に.NET 4で動かしているので無保証となる点にご留意いただき、利用者の自己責任で使うことを前提としてください。

なお、プラグイン・アドイン方式でセキュリティ問題をケアしている場合、CAS周りでNotSupportedExceptionが発生する可能性があります。
loadFromRemoteSourcesを使って脆弱にして動かすか、素直に2や3のアプローチを採るか、よく考えましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。