![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAZLHA4jwGeY3u01HUVI27B_q00jQSDGN2GmNo5gwGIpsLGJJJO34uRVnH5-89dZbOXjTO4rejbFVMuniiqX7q_OajcPVXjM6MU2MQIPSKK_H6JRwBEDHvnoax3oA7KkfBQJnypw/s400/wine.png)
.NET Framework
.NET Framework 環境が wine 上で利用できるかどうか調べてみました。
まず Let's Wine(第8回)で紹介した winetricks で .NET Framework をインストールします。winetricks スクリプトを、次のように引数なしで実行すると、インストールするプログラムを選択する画面が表示されます。
$ sh winetricks
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtsPFc8ICr4rsZPM6x_yuzwMy8v-ovXXWw4nTau0Q7fI_nJPb4iIuUpUm5cJiEcpVwJyzeLpGZx85VIHFAB4HFVDyrthnKrIMuxGz3B9Gmogg7Kf6x76Gsf-g60UGFhO8ycjFlFQ/s320/winetricks01.png)
winetricks では .NET Framework 1.1 から 3.0 までインストール出来るようになっていますが、全部を正常にインストールできるかどうか怪しかったので、dotnet11 (1.1) からひとつずつインストールしていきました。
いろいろ試行錯誤をしましたが、結局、私の環境 (wine-1.1.38-1.fc12.i686) で正常にインストーラが終了したものは、dotnet11 と dotnet20 (2.0) の2つでした。ということで、.NET Framework 2.0 に対して簡単な動作確認をしてみます。
動作確認には Linux 上の mono でコンパイルしたバイトコードを mono と、wine 上の .NET Framework で動作させてみます。以下の C# のサンプル (hello.cs) を使用しました。
using System;
using System.Windows.Forms;
class HelloWorldApp {
public static void Main() {
MessageBox.Show("こんにちは、世界!", "mono");
}
}
この hello.cs を mono (2.4.3) で以下のようにコンパイルします。
$ gmcs hello.cs -pkg:dotnet
$ ls
hello.cs hello.exe
コンパイルされた hello.exe を mono で実行すると以下のようになります。
$ mono hello.exe
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAMXhWvWNw8i4-xClL3Ys-hIcgZXdXiXzxvykWldRse1QlqW89PPOQbM_mWe5l_2aeUo5ip1NOtPmUGVE0a2GdX8WsYHuT2AT6PF8kDv-SGCoueXr6yWAS34LAfafqJ0_euddR2A/s320/dotNET_hello_mono.png)
同様に .NET Framework 2.0 がインストールされている wine で実行した結果です。
$ wine hello.exe
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio5LVAGKOXO_a1FnVwGfZpaizKahmoh4cWvTAzZG01VCx4EuSnlNguZQ3WkvEs3CeVoShGoti1EItSQdfVcLvWkpZNlN4FxrUypw5IJ-g7Uf-FA4tWPyJjM9_9rpa8ZKzXTHH3XA/s320/dotNET_hello_wine.png)
参考サイト
[1] Hello worldプログラムの一覧 - Wikipedia
[2] Mono Basics - Mono