14歳の自分に衝撃の事実を告げてください

OpenFileDialogの表示テストを異なるコンパイラーで、行っているのですが、Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1では表示されるのに、Microsoft (R) Visual C# Compiler version 4.6.1055.0 for C# 5では表示されません。コンパイルは、コマンドプロンプトから行っています。原因をどなたか教えていただけませんでしょうか?以下テストに用いたソースです。

//OpenFileDialogTest.cs
using System;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.Diagnostics;
class OpenFileDialogTest{

public OpenFileDialogForm ofdf;

static void Main() {
var t = new OpenFileDialogTest();
t.ofdf = new OpenFileDialogForm();

}
}
///*************************************************
///OpenFileDialogForm
///*************************************************

public class OpenFileDialogForm : Form {
public string ofpath;
public OpenFileDialogForm(){
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Title = "Chose File for Import";
openFileDialog1.Filter = "CSV File|*.csv";
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK) {
ofpath = openFileDialog1.FileName;
Console.WriteLine(ofpath);
}

}
}

質問者からの補足コメント

  • うーん・・・

    エントリポイントを作成する([STAThread]とMainメソッドの前の行に付ける)と表示されるようになりました。

    ただ、なぜMicrosoft (R) Visual C# 2010 Compiler version 4.0.30319.1では表示されるのに、Microsoft (R) Visual C# Compiler version 4.6.1055.0 for C# 5では表示されないのかは依然不明です。
    そもそも、エントリポイントがなぜ必要なのかが分かっていません。(Mainメソッドの表記だけではいけないのか??)

      補足日時:2016/05/15 22:12

A 回答 (1件)

下記を参照。


http://dobon.net/vb/dotnet/form/stathread.html

そもそもWindowsフォーム関連はSTAでしか正しく動作しません。

コンパイラの解析性能の向上で事実上動作しない警告を検出するようになっているのかと。
あと特に事情がないならVisual Studioを使った方がよいですよ。
Windows Formプロジェクトは初期化手順など色々決まりごとが多いので、MSBuildのみで適切に扱うのは難易度が高いです。
    • good
    • 0
この回答へのお礼

>そもそもWindowsフォーム関連はSTAでしか正しく動作しません。

ということなのですね。

Visual Studioはインストールしてあるのですが、使い方がよくわからないのでこれから勉強します。

ご回答ありがとうございます。

お礼日時:2016/05/25 22:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報