質問

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

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

繰り返しますが、64 ビット アプリケーションを使用する場合、これは発生しません。コードは完全にロックされます。私は、少なくともいくつかの理由から、コードが完全にロックされることを非常に好みます。

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

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

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

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

この問題に関する関連投稿はいくつかありますが、この問題に直接対処するものはありません。

助けやアイデアがあればよろしくお願いします...

マイク

役に立ちましたか?

解決

ここで私が思い付くことが最高です。それは動作しますが、あなたが取るしたくないかもしれないいくつかのステップがあります。

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

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

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

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

このまだは、完全に機能しません。何あなたがしなければならないことはビジュアルソースセーフにそのプロジェクトのために、あなたのソース管理を設定されています。 (< - これは、私はあなたが好きではないだろうと仮定していステップである。)

次にVS2k8を再起動します。

あなたは読み取り専用ファイルのいずれかを設定する場合は、

この時点で、あなたは、Visual Studioは、あなたがすべてでこのファイルを編集できないことがわかります。あなたがしようとすると、それはあなたのコンピュータの例外音楽を再生します。

さて、あなたのファイルは読み取り専用アプリを実行したときに、これを行うには、ポストビルドプロセスを設定するようにします。それは簡単です。

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

他のヒント

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

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

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

ちょっとそこ - 私は完全にあなたのコードをロックするのお手伝いをすることはできません申し訳ありません - 私は反対の願望があります。完全にデバッグ時にロックを解除するには、私はあなたの第二の問題のお手伝いをすることができます。

私はあなたが任意のキーを送信する前に、アクティブなウィンドウにフォーカスがそのウィンドウが返されるまで、あなたのテストの実行を一時停止し、あなたの標的部位以外の場合、アクティブなウィンドウを確認し検討することをお勧めします。

私はそれはあなたが望む解決策ではないと知っているが、それはおそらく、他の同様の問題を防ぐために損はない。

運のベスト!

アダム

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top