2012-10-22 46 views
5

私の友人は、1つのCPPファイルと1つのC#WPFプロジェクト(1つのXAMLと1つのCS)を含む2つのソリューションを含むVS2010プロジェクトを送ってくれました。 VS2010を使用しているコンピュータですべてが正常に動作しています。彼がプロジェクトをビルドして実行すると、主なXAMLウィンドウが想定どおりに表示されます。Visual Studio 2010のVisual Studio 2010プロジェクト

私のコンピュータでVS2012を使って同じことをしようとすると、プロジェクトの構築に問題はありません。しかし、私はそれを実行すると、何も起こりません。私はいくつかのブレークポイントをC#コードに追加し、コードが実行されることに気付きましたが、ウィンドウが表示されることはありません。したがって、コードが実行されるとすぐに、XAMLインターフェイス内のユーザー入力を待つのではなく、アプリケーションが終了するだけです。

これまで私はこの問題に直面していませんでした。通常はVS2010からVS2012に移行しています。そしてもう一度、すべてがうまくいくように見えます...プロジェクトを実行しているときにXAMLウィンドウが表示されていることを除いて、これはかなり面倒です。

何が起こっているのか誰にも分かっていますか?私はおそらくここに本当に根本的な何かが不足しているでしょうが、プロジェクトを開始するときにXAMLウィンドウを確実に実行するのに役立つ解決策やプロジェクトのプロパティは表示されません。

+0

VS 2012では、.NET 4.5のインプレースアップグレードである.NET 4.5がインストールされています。あなたのアプリを壊すバグ。デフォルト以外のプリプロセッサは定義されていますか? – PrimeNerd

+0

私はターゲットフレームワークを見て、まだ4.0です。私は3.5を試してみましたが、それは助けになりません。私は最初からプロジェクトを再開しようとしますが、それには時間がかかります。私はマイクロソフトがなぜ互いと悪いやり方で製品を作っているのか理解していない。 – dnLL

答えて

0

4.5コンパイラがforeachループ内のlambdasのセマンティクスを変更したため、アプリケーションがこれを超えた可能性があります。ここを参照してください:あなたはこのような何かがあった場合https://connect.microsoft.com/VisualStudio/feedback/details/732657/c-5-compiler-doesnt-respect-the-semantics-of-the-foreach-range-variable-when-langversion-5

は基本的には:

List<Action<int>> actions = new List<Action<int>>(); 
foreach (var x in new[] { 10, 20, 30 }) 
{ 
    actions.Add(() => Console.WriteLine("x = {0}", x); 
} 

actions.ForEach(a => a()); 

を、それが4.0または4.5でコンパイルされたかどうかに応じて、異なる結果を与えるだろう。

+1

あなたのコードはすべてのコンパイラでコンパイルされません。それは 'List actions = new List ();'であるべきですか? – linquize

+0

結果:これは本当ですか? .NET 4コンパイラ{30,30,30}; .NET 4.5コンパイラ{10,20,30} – linquize

+0

はい、する必要があります。基本的に4.0では、ラムダは同じ変数スコープを参照します.4.5では、コンパイラはすべての繰り返しに対して新しいスコープを作成します。 –

関連する問題