4

15の異なるプロジェクトで構成されているレガシーシステムがあり、一方を他方から参照しようとすると、循環依存が発生するため、参照できないと文句を言います。

私の問題は、参照しようとしているプロジェクト('XScript')には、参照しようとしているプロジェクト('WPF_Forms')に対する参照がないため、循環依存がどのように発生するかがわからないことです。 )。

ここで調べてみると、問題には明らかな循環依存関係があるように見えますが、同様の運命に苦しんでいる人々が見つかりました。

ここからいくつかの投稿で推奨されているように、NDependのデモコピーをダウンロードしました。さまざまな依存関係ツールを使用しているにもかかわらず、明確なリンクはまだありません。

関連するプロジェクトを右クリックして[プロジェクトの依存関係]オプションを使用しましたが、リンクが表示されません。また、Visual Studioを再起動し、「CleanSolution」と「Re-buildSolution」を試しましたが無駄になりました。

私が思いついた唯一の方法は、プロジェクト自体ではなく、ビルドされたDLLを参照して「XScript」を参照することですが、それは少し汚い感じがするので、ハックラウンドではなく、なぜこれが起こっているのかを知りたいですそれ。

誰かが私が見逃したかもしれない何か、または何が悪いのかを解明するために私が採用できる戦略を提案できますか?

編集1: XScriptはWPF_Formsを参照するために使用されましたが、その参照はその後削除されました(そして、プロジェクトはクリーンアップされ、[プロジェクトの依存関係]ウィンドウに依存関係が表示されずに再構築されました。VSがどこかにリンクを保持している可能性があります。プロジェクトは何らかの形でリンクされていると思います。

編集2: BitBonkの提案に続いて、VSのコードマップ機能を使用して実行し、プロジェクトトポロジを作成しました。XScriptとWPF_Formsは、メインの.exeによってのみ参照され、他には何も参照されません。これはVSの問題であると思われ始めており、それを機能させるには、新しいプロジェクトを作成し、すべてのサブプロジェクトを再度追加する必要があるかもしれません。

4

3 に答える 3

9

問題は、Visual Studio 2012 でした。

Bitbonk が提案したようにコード マップを使用した後、問題の原因となる参照は見られませんでした。そこで、プロジェクトから XScript と WPF_Forms の両方を削除し、クリーンを実行し、XScript を追加してクリーンを実行し、次に WPF_Forms を追加してクリーンを実行しました。

その後、WPF_Forms から XScript への参照を追加しても問題は発生しませんでした。これは、XScript から WPF_Forms への依存関係がなくなったことを認識しないことによって引き起こされた VS のバグであると推測できます。

うまくいけば、この質問と提案された回答が将来他の誰かに役立つことを願っています.

于 2013-01-24T11:37:33.840 に答える
4

他の人がすでに述べたように、循環依存関係には複数のレベルが含まれる場合があります。viusal studio 2012のコード マップ機能を使用して、依存関係グラフを簡単に視覚化できます。

ここに画像の説明を入力

于 2013-01-24T10:22:52.603 に答える
1

循環依存関係に 2 つ以上のプロジェクトが関係している可能性があります。

于 2013-01-24T10:18:27.857 に答える