1

これは次のフォローアップです:非同期デリゲート/ラムダを使用したプロジェクション

どうやら、Async CTP には私が遭遇したバグがあり、VS11 コンパイラを使用する必要があります。コマンド ラインでは、msbuildVS11/.NET 4.5 が .NET 4.0 ディレクトリにインプレース インストールされるため、VS2010 で記述されたプロジェクトに対して実行しても、VS11 コンパイラでコンパイルされます。

ただし、Visual Studio 2010 内では、新しい VS11 コンパイラにアップグレードされていないように見えるインプロセス コンパイラが使用されています。

Visual Studio 2010 が使用するコンパイラを (何らかのハッカー/DLL 操作によって) 変更できますか? これは、VS11 が Windows Azure をサポートするまでのハック/回避策にすぎないため、ベータ版/リリース候補版/RTM にアップグレードできます。

4

1 に答える 1

2

あまり知られていないプロパティを使用して、ある程度の成功を収めることができますUseHostCompilerIfAvailable。これにより、IDE 内のビルドがフレームワーク ディレクトリのコンパイラを使用するようになります。

ただし、Intellisense などの IDE 機能は、常にインプロセス コンパイラを使用します。ただし、ヒットしているバグが非同期メソッドの最終的な変換のみにある場合は、インプロセス コンパイラが intellisense に対して十分であり、UseHostCompilerIfAvailable が VS からビルドできるようにするのに十分であることがわかる場合があります。

csproj ファイルを手動で編集して設定し、

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>

最上位のプロパティ グループにあります。

また、VS11 は「ラウンドトリップ」をサポートしています。ほとんどのシナリオでは、アップグレードを強制することなく、VS11 を使用して VS10 プロジェクトを開くことができます。したがって、当分の間プロジェクトを V10 形式のままにしておく必要があるチームがいる場合は、少なくとも VS11 を独立して使用できます。ただし、VS11 用にまだリリースされていない必要なアドインがある場合、これは困難です。

お役に立てれば!:)

于 2012-06-01T09:58:52.807 に答える