3

これが賢明な質問ではないことは承知していますが、Visual Studio 2010 の動作を理解するのに苦労しています。

メインの名前空間とアセンブリに含まれていたソース ファイル (x.cs としましょう) 内のクラス (クラス x としましょう) を別のプロジェクト (およびアセンブリ) に移動する必要がありました。名前空間。後者は、ユーティリティ クラスを収集することを目的とした dll です。おそらく私はこれを間違った方法で行いました。

症状: メイン フォーム (デザインではなくコード) で、X クラスのコンストラクターの上にマウスを置いて F12 キーを押すと、クラス宣言を含む "メタデータからの" 新しいソースが表示されます (ただし、ソースを開くことはできます)。マウスの右ボタンをクリックして「ソースコードを表示」を選択します)。VS がソリューションで適切なソース コードを見つけることができないようです。

私の質問:

  1. F12 が適切なメソッドを指している状態から、どうすれば回復できますか?
  2. より一般的には、異なるプロジェクトやアセンブリ内でコードを移動する正しい方法は何ですか?
4

1 に答える 1

2

説明されている問題を複製してみましたが、うまく機能しています。私が行った手順を説明させてください。おそらく、どこで何か違うことをしたかわかるでしょう。

  1. 新しいソリューションを作成します。
  2. FormsApp という新しい Windows フォーム アプリケーションを追加します。これにより、デフォルトの名前空間が FormsApp である Form1 というフォームが作成されます。
  3. FormsApp プロジェクトの util.cs というファイルに Util というクラスを作成しました。FormsApp と同じ名前空間を取得します。
  4. Form1 コンストラクターで Util クラスのインスタンスを作成すると、F12 を押すと、期待どおりに Util の定義に移動できます。
  5. ソリューションに Utility という名前の新しいクラス ライブラリを作成しました。
  6. ファイルを移動する方法はいくつかありますが、ソリューション エクスプローラーで util.cs ファイルをクリックし、Utility プロジェクトにドラッグしただけです。これにより、ファイルがコピーされますが、元のファイルはそのまま残ります。ファイルを別の方法でコピーしたのではないでしょうか?
  7. オリジナルを削除すると、コンパイルしようとするとビルド エラーが発生するはずです。FormsApp プロジェクトは、新しく追加された Utility プロジェクトの Util クラスについて何も知らないため、これは予期されることです。
  8. ソリューション エクスプローラーの FormsApp プロジェクトに Utility プロジェクトへの参照を追加します。
  9. 今ビルドしようとすると、成功するはずです。Form1 コンストラクターで F12 キーを押すと、Util クラスの名前空間を変更していなくても、期待どおりに Util クラスの定義が表示されます。

物事を明確にするのに役立つ場合は、いくつかの画像を次に示します。

ソリューション エクスプローラー:

ソリューション エクスプローラー

Form1 コンストラクター:

ここに画像の説明を入力

ユーティリティ クラス:

ここに画像の説明を入力

于 2013-01-14T16:51:54.730 に答える