web-dev-qa-db-ja.com

Visual Studio 2008でデバッグするときの「64ビットアプリケーションへの変更は許可されていません」

Visual Studio 2008、C#を使用しています。 edit-and-continue(デバッグ中にコードを編集)を使用しようとすると、この例外が発生します。

「64ビットアプリケーションへの変更は許可されていません」

何故ですか?回避策はありますか?

56
ripper234

編集と続行は、CLRレベルの64ビットアプリケーションではサポートされていないため、Visual Studioで実装することもできません。

この問題を回避する最も簡単な方法は、アプリケーションをx86チップにターゲットすることです。これにより、Wow64モードで32ビットプロセスとして実行されるため、ENCが可能になります。これを行うには、次を実行します

  1. .EXEアプリケーションを右クリックし、[プロパティ]を選択します
  2. [ビルド]タブに移動します
  3. プラットフォームターゲットコンボボックスをx86に変更します。

enter image description here

47
JaredPar

個人的に、私が実際に欲しいのは、編集と継続ではなく、停止と編集です。

そのため、単にツール/オプション/デバッグ/編集と続行をオフにします。

そうすることで、その厄介なダイアログボックスが、そもそも望まなかった機能の不足について私を悩ませることを禁止します:-)

6
Steve Pitchers

64ビットコードの「編集して続行」機能は、Visual Studio 2013でサポートされます。

詳細はこちら

4
kenchilada

Jcopenhaが言ったように、x64にはまだ編集と継続がありません。 64ビットCLRの現在のバージョンではサポートされていません。ただし、回避策があります。

Bug Babble post で見つけることができます。

X86のターゲットCPUでマネージアセンブリをコンパイルする必要があります。これにより、64ビットCLRではなく32ビットCLRが使用されます。

VBプロジェクトの場合、プロジェクトを右クリックして、[プロパティ]/[コンパイル]/[詳細コンパイルオプション]/[ターゲットCPU]に移動し、「x86」に設定します。C#プロジェクトの場合は、プロジェクトを右クリックしますProperites/Build/Platform Targetに移動し、「x86」に設定します。

それが役に立てば幸い。

4
Vadim

編集および続行機能は、x64にはまだ実装されていません。彼らがいつそれをやろうとしているのかについての更新はまだ聞いていません。

x64 CLRで編集および続行が機能しない理由 も参照してください。

3
jcopenha
  1. ターゲットCPUが「任意のCPU」に設定されている場合、32ビットウィンドウでは32ビットアプリケーションとして、64ビットウィンドウでは64ビットアプリケーションとして実行されます。ただし、Visual Studioでは、64ビットアプリケーションの「編集および継続」機能は使用できません。

  2. 64ビットマシンで「流fluentに」デバッグするには、次のいずれかを実行できます。

    a)[ターゲットCPU]を[任意のCPU]に設定しますが、[32ビットを優先する]チェックボックスをオンにします。

    b)または、「ターゲットCPU」を「x86」に設定します

非常に重要:どちらのオプションでも、[最適化を有効にする]チェックボックスをオフにする必要があります。

0
Joseph Wu

MS Visual C#Express 2010でも同じエラーメッセージが表示されました。しかし、アプリケーションは間違いなくx86プロジェクトとして構成されていたため、面白かったです!

最終的には、.csprojファイルに次の行がありませんでした。

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
    ...
    <PlatformTarget>x86</PlatformTarget>
    ...
</PropertyGroup>

なぜそれが見つからなかったのかわかりません... MS Visual C#Express 2010にはバグがないと思います;)

0
Jane

残念ながら、編集と続行は64ビットではサポートされていません。実際、64ビットアプリケーションのデバッグ時に編集と続行を使用しようとすると、次のエラーメッセージが表示されます。「64ビットアプリケーションへの変更は許可されていません」 Visual Studio 2008のC#またはVBプロジェクトでは、プロジェクトの「プラットフォーム」は「任意のCPU」に設定されます。これは、32ビットオペレーティングシステムでアプリケーションを実行する場合、アプリケーションは32ビットプロセスとして実行され、同様に、64ビットオペレーティングシステムでアプリケーションを実行すると、アプリケーションは64ビットになります。「任意のCPU」の結果は、アプリケーションをデバッグしようとすることです64ビットオペレーティングシステムでは、編集および続行機能を使用できません。

ただし、回避策があります。開発中に、プロジェクトのプラットフォームを32ビットに設定できます。つまり、アプリケーションは64ビットオペレーティングシステムでも32ビットプロセスとして実行されます。これはWOW64または「Windows On Windows」と呼ばれ、基本的には64ビットオペレーティングシステムで32ビットアプリケーションを実行できることを意味します。

では、プロジェクトのプラットフォームを32ビットにどのように設定しますか?さて、Visual Studio Configuration Managerを使用して32ビットプラットフォームを作成する必要があります。これは短いチュートリアルです。

まず、ビルド->構成マネージャーから「構成マネージャー」ダイアログを開きます。 [構成マネージャー]ダイアログを以下に示します。

0
AhmAr KAka