24

プロジェクトとソリューションファイルのリファクタリングを行っている間、プロジェクトを少なくするためにいくつかの.slnファイルを分離しました。

時折、現在の.slnファイルの範囲外からいくつかのプロジェクトを参照する必要があります。

たとえば、私の初期状態は次のとおりです。

ソリューションA

  • プロジェクトA
  • プロジェクトB

リファクタリング後は次のようになります。

ソリューションA_NEW

  • プロジェクトA

ソリューションB_NEW

  • プロジェクトB

私の質問は-同じVSソリューションで定義されていないプロジェクトにProjectReferenceノードを追加することは可能ですか?(私の場合、PROJAにPROJBへのプロジェクト参照があります)。

また、可能であれば、それをお勧めしますか?

.csprojファイルを手動で編集するだけでは、これはVSIDEからは不可能であることを私は知っています。

4

3 に答える 3

24

あなたはこれを行うことはできません。プロジェクト参照には、参照されるプロジェクトの識別GUIDが含まれます。これは、ソリューションのビルドオプションと依存関係を追跡するために、ソリューションファイルに保持されます。ソリューションに含まれていないプロジェクトを参照しようとすると、VisualStudioは文句を言います。

もちろん、ソリューションに含まれていないプロジェクトによって作成されたアセンブリへのファイル参照を追加できます。

更新:これは反対票を投じられたので、私は私の答えを洗練します。

同じソリューションの外部にある別のプロジェクトを参照するプロジェクトファイルを作成することは技術的には可能ですが、VisualStudioでは簡単に作成することはできません。これを行うのが悪い考えである(私が観察した)非常に良い理由の1つは、MSBuildが参照プロジェクト(デフォルトの構成)をビルドすることを決定した場合、構築しているソリューション構成とプラットフォーム(参照プロジェクト)が無視されることです。代わりに、その参照プロジェクトファイルで指定されたプラットフォームが使用されます。したがって、異なるフォルダにバイナリタイプが混在する可能性があります。

于 2012-07-22T17:07:24.250 に答える
8

プロジェクトを一時的にソリューションに追加し、参照を追加し、参照が追加されたプロジェクトをアンロードし、参照されているプロジェクトを削除し、参照を使用してプロジェクトを再読み込みします。

プロジェクトをアンロードしない場合、参照されているプロジェクトが削除されると、参照はVisualStudioによって自動的に削除されます。

おそらくおわかりのように、Visual Studioはこれを行うように設計されていないため、ソリューションのビルド順序を定義し、代わりにアセンブリ参照を使用する方が適切です。

于 2015-11-08T17:46:02.100 に答える
1

ソリューション内にあるソリューションにプロジェクトを確実に追加できます。何の問題もありません。私の経験から、それは私が通常行ったり行ったりしたことではありませんが、時々する必要があります。これは、同じコードベースを再利用するためにアーキテクチャの異なるノードが必要な大規模なプロジェクトで特に当てはまります。AB

お役に立てれば。

于 2012-07-22T16:34:23.140 に答える