Visual Studio 2008、C# を使用しています。エディット コンティニュ (デバッグ中にコードを編集) を使用しようとすると、次の例外が発生します。
「64 ビット アプリケーションへの変更は許可されていません」
何故ですか?回避策はありますか?
Visual Studio 2008、C# を使用しています。エディット コンティニュ (デバッグ中にコードを編集) を使用しようとすると、次の例外が発生します。
「64 ビット アプリケーションへの変更は許可されていません」
何故ですか?回避策はありますか?
エディット コンティニュは CLR レベルの 64 ビット アプリケーションではサポートされていないため、Visual Studio でそれを実装する方法もありません。
この問題を回避する最も簡単な方法は、アプリケーションのターゲットを x86 チップにすることです。これにより、Wow64 モードで 32 ビット プロセスとして実行されるため、ENC が可能になります。これを行うには、次のようにします。
個人的に、私が実際に望んでいるのは、編集して続行するのではなく、停止して編集することです。
したがって、ツール/オプション/デバッグ/エディット コンティニュをオフにするだけです。
そうすることで、厄介なダイアログ ボックスが、私がそもそも望んでいなかった不足している機能について私を困らせないようにします :-)
jcopenha が言ったように、x64 にはまだエディット コンティニュはありません。64 ビット CLR の現在のバージョンではサポートされていません。ただし、回避策があります。
Bug Babble の投稿で見つけることができます。
x86 のターゲット CPU を使用してマネージ アセンブリをコンパイルする必要があります。これにより、64 ビット CLR ではなく 32 ビット CLR が使用されます。
VB プロジェクトの場合、プロジェクトを右クリックし、[プロパティ]、[コンパイル]、[高度なコンパイル オプション]、[ターゲット CPU] の順に移動して、"x86" に設定します。C# プロジェクトの場合、プロジェクトを右クリックし、Properites/Build/Platform Target に移動して、「x86」に設定します。
それが役に立てば幸い。
64 ビット コードの「エディット コンティニュ」機能は、Visual Studio 2013 でサポートされます。
エディット コンティニュ機能は、x64 にはまだ実装されていません。彼らがいつそれを行う予定であるかについての最新情報はまだ聞いていません。
エディット コンティニュが x64 CLR で機能しないのはなぜですか?も参照してください。
ターゲット CPU が「任意の CPU」に設定されている場合、32 ビット Windows では 32 ビット アプリケーションとして実行され、64 ビット Windows では 64 ビット アプリケーションとして実行されます。ただし、Visual Studio では、64 ビット アプリケーションの「編集と継続」機能が許可されていません。
64 ビット マシンで「流暢に」デバッグするには、次のいずれかを実行できます。
a) 'Target CPU' を 'Any CPU' に設定しますが、'Prefer 32bit' ボックスをチェックします。
b) または、「ターゲット CPU」を「x86」に設定します
非常に重要: どちらのオプションでも、[最適化を有効にする] ボックスをオフにする必要があります。
MS Visual C# Express 2010 でも同じエラー メッセージが表示されました。アプリケーションが x86 プロジェクトとして構成されていることは間違いないので、これは興味深いことでした。
最終的に、.csproj ファイルに次の行がありませんでした。
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
...
<PlatformTarget>x86</PlatformTarget>
...
</PropertyGroup>
なぜ見つからなかったのかわかりません... MS Visual C# Express 2010 はバグフリーではないと思います ;)