1

複数のVSプロジェクトに分割されたプロジェクトを開始しています。プロジェクトごとに個別のテストプロジェクトを計画していたので、次のような解決策があります。

  • プロジェクト1
  • Project1.Test
  • プロジェクト2
  • Project2.Test

internalテストしたいクラスがいくつかあります。そこで、Visual Studio 2008 (SP1) を使用してテスト プロジェクトでテスト スタブを生成し、InternalsVisibleTo. しかし、内部クラスの下に赤い波線が表示されます。コンパイルするとビルドが成功し、テスト メソッドを見ると赤い波線が消えています。

しかし、ファイルをタフにすると、波線が戻ってきて、内部クラスにインテリセンスがありません。

internalProject1 内にあり、テストは Project1.Test 内にあります。完全を期すために、まったく同じ方法でテスト メソッドを生成することにしましたが、今回は Project2.Test に対して実行したところ、完全に機能することが示されました。赤い波線は表示されませんが、インテリセンスはすべて表示されます。

Project1.Test を削除して、考えられるすべてのテスト メソッドを再作成しようとしましたが、何をしても、ペアになっているテスト プロジェクト内で内部を完全に表示することはできません。別のプロジェクトのためです。

それが機能していないのは私のナットをやっています!

4

3 に答える 3

1

InternalsVisibleTo属性で文字列定数または正確なリテラル攪拌(連結なし)以外のものを使用できますか?文字列定数を使用して定義する習慣がありましたが、これはインテリセンス以外のすべてで正常に機能します。単純な文字列として貼り付けることで置き換えれば、機能します。

.suoファイル(ソリューションファイルと同じフォルダー)を削除することも役立つ場合があります。

于 2009-03-01T18:07:20.070 に答える
1

特に強い名前を使用している場合は、これも見ました。正直なところ、私は興奮しませんでした。コンパイルとテストが正しく行われる限り、私は奇妙なグリッチに耐えることができます。たとえば、1 つのビルドの問題が発生した場合、他の (内部) メソッドが見つからないという不平を言うのを見てきましたが、クリーン ビルドではエラーは表示されません。繰り返しますが、私はこれに悩まされることはありません... (多分、私は寛大すぎるのでしょうか?)。

特に、テストで内部型/メンバーを使用する必要があることはめったにありません(ほとんどの場合、パブリック API を介してテストしようとします)。したがって、100% 信頼できる Intellisense がなくても、通常は大きな問題にはなりません。探しているタイプ/メンバーは既にわかっています (コピー/貼り付け;-p)。

確かに、それが修正されればいいのですが、もし私が予算管理者だったら、おそらくそれを受け入れて、最初に他の機能に集中することができたでしょう.

于 2009-02-22T08:49:55.040 に答える
0

IntelliSense DB ファイルに問題がある可能性があります。それを削除して、VSにDBの再構築を試みてもらいます。

これを行うには、ソリューションを閉じて (すべて?) .ncb ファイルを削除します。安全のために、名前を .nc4 などに変更してください。ソリューションを再度開き、再構築します。それが機能するかどうか教えてください。

編集:どうやら、ncb ファイルは C++ プロジェクト専用です。IntelliSense DB for C# プロジェクトがどこにあるのかわかりません。また、見つけることもできませんでした。私があなただったら、DB をリセットする方法を見つけようとします。

アサフ

于 2009-02-22T08:21:32.923 に答える