10

Visual Studio 2008内でデバッグしているときに、コードを完全にロックする方法があるかどうか疑問に思いました。64ビットアプリケーションとして実行すると、コードド​​キュメントが自動的にロックされます。ただし、コーディングのほとんどは、32ビットのExcel用のアドインを作成しています。その結果、「AnyCPU」をターゲットにしても、VSホストは32ビットプロセス内で実行されていることを認識しているため、VisualStudioでホストされているコードの実行中にソースコードがロックされることはありません。

[ツール]>[オプション]>[デバッグ]>[編集して続行]に移動し、[編集して続行を有効にする]チェックボックスをオフにすることで、[編集して続行]をオフにできます。ただし、これによってコードが完全にロックされるわけではありません。これにより、コードの編集が現在の実行で実行されるのを防ぐことができますが、マウスクリックやキーストロークによって実際にコードが変更されるのを防ぐことはできません。

繰り返しますが、64ビットアプリケーションで作業する場合、これは発生しません。コードは完全にロックされています。少なくともいくつかの理由から、コードを完全にロックすることを強くお勧めします。

  1. デバッグ中に誤ってキーなどを押してしまうことがありますが、絶対にやりたくないです。まれですが、問題です。

  2. 私の自動テストの多くは、SendKeysを介してユーザーインターフェイスを駆動します。ただし、デバッガーを使用してこのようなテストを実行すると、一部の側面にSendKeysが含まれていることを忘れることがあります。つまり、キーストロークがExcelではなくVisualStudioIDEに送信されることになります。

上記の問題#2では、単体テストが失敗します。これは問題ありませんが、すべてのキーストロークをコードモジュールに送信してコードを破棄することはまったく受け入れられません。

誰かがここで何かアイデアを持っていますか?32ビットCPUに対してコンパイルされているときに、Visual Studioでホストされて実行されている場合、コードを完全にロックできますか?

この問題に関するいくつかの関連する投稿がありますが、どれもこれに直接対処していません:

ヘルプやアイデアを事前に感謝します...

マイク

4

3 に答える 3

5

Visual Studio 2005で使用するトリックを次に示します(Visual Studio 2008でテストする機会はありませんが、機能するはずです)。

  • 実行可能アセンブリのプロパティを開きます
  • [デバッグ]タブに移動します
  • [アンマネージコードのデバッグを有効にする]チェックボックスをオンにします

ブレークポイントに到達した場合でも、コードド​​キュメントはロックされたままである必要があり、ブレークポイントを変更しようとすると、「アンマネージデバッグが有効になっている場合は変更は許可されません」というポップアップがトリガーされます。

于 2010-01-18T13:12:28.713 に答える
4

ちょっとそこに-申し訳ありませんが、コードを完全にロックするのを手伝うことはできません-反対の願望があります:デバッグ中に完全にロックを解除することですが、2番目の問題についてはお手伝いできます。

キーを送信する前にアクティブウィンドウを確認することを検討することをお勧めします。アクティブウィンドウがターゲットサイト以外の場合は、そのウィンドウにフォーカスが戻るまでテストの実行を一時停止します。

私はそれがあなたが望む解決策ではないことを知っていますが、他の同様の問題を防ぐことはおそらく害にはならないでしょう。

頑張ってください!

アダム

于 2010-01-12T22:20:23.443 に答える
3

これが私が思いついた最高のものです。それは機能しますが、実行したくない場合があるいくつかの手順があります。

基本的に、この手法は、アプリケーションの実行時にプロジェクトのファイルを読み取り専用に設定し、アプリケーションが終了したらそれらを書き込み可能に戻すことです。

ただし、VS2k8では、デフォルトで、ファイルを読み取り専用に設定しても、ファイルを編集できます。まず、[ツール]>[オプション]>[環境]>[ドキュメント]で[読み取り専用ファイルの編集を許可する...]設定をオフにする必要があります。

次に、次のキーをDWORDとしてレジストリに追加し、その値を1に設定する必要があります。

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed  

これはまだ完全には機能しません。次に行う必要があるのは、そのプロジェクトのソース管理をVisualSourceSafeに設定することです。(<-これはあなたが気に入らないと私が想定しているステップです。)

次に、VS2k8を再起動します。

この時点で、ファイルの1つを読み取り専用に設定すると、VisualStudioではこのファイルをまったく編集できないことがわかります。試してみると、コンピュータの例外音楽が再生されます。

ここで、アプリの実行時にファイルを読み取り専用にするには、ビルド後のプロセスを設定してこれを行います。簡単だ。

難しいのは、アプリの実行が終了したら、それらを書き込み可能に戻すことです。最も簡単な解決策は、おそらくバッチファイルのショートカットです。

于 2010-01-16T20:34:35.727 に答える