0

私は困惑しています。さまざまなビューを個別のプロジェクトに分割したWPFソリューションがあります。カスタムコントロール用のプロジェクトもあります。最後に、私のアプリケーションは別のプロジェクトにあり、デフォルトのプロジェクトとして設定されています。

メインウィンドウと他のビューの1つは、どちらもカス​​タムコントロールプロジェクトのコントロールを使用しています。カスタムコントロールを使用する2番目のビューを除いて、すべてのプロジェクトが正常にビルドされます。

サンプルアプリではこれを複製できませんでしたが、ここで説明するために最善を尽くします。

MySolution
    MyApp.csproj
       References
           MyMainWindow
           MySecondWindow
           MyThirdWindow
           MyViewModels
           [std WPF references]
       App.xaml
           App.xaml.cs
    MyMainWindow.csproj
       References
           MyControls
           [std WPF references]
       MainWindow.xaml
           MainWindow.xaml.cs
    MySecondWindow.csproj
       References
           [std WPF references]
       SecondWindow.xaml
           SecondWindow.xaml.cs
    MyThirdWindow.csproj
       References
           MyControls
           [std WPF references]
       ThirdWindow.xaml
           ThirdWindow.xaml.cs
    MyControls
       References
           [std WPF references]
       ControlForMainWindow.xaml
           ControlForMainWindow.xaml.cs
       ControlForThirdWindow.xaml
           ControlForThirdWindow.xaml.cs

この(非常に大雑把な)例では、MyMainWindowプロジェクトとMyThirdWindowプロジェクトは参照が同じです。MyThirdWindowを除くすべてのプロジェクトが正常にビルドされます。私が得るエラーは次のとおりです。

Could not load file or assembly '[MyControls]' or one of its dependencies.
The system cannot find the file specified.

一見同じプロジェクトが失敗するのに、なぜ1つのプロジェクトが構築されるのか誰かが知っていますか?

編集1:

MyThirdWindowからControlForThirdWindow(および名前空間宣言)を削除すると(ただし、プロジェクト参照は残します)、MyMainWindowが引き続きControlForMainWindowを使用していても、ソリューション全体がビルドされ、アプリが実行されます。名前空間宣言が正しいことを確認しました(MyMainWindowからコピーしました)

4

1 に答える 1

0

私はすべてのウィンドウを別々のプロジェクトに移動するタスクに取り組んでいました。ウィンドウごとに、これにはいくつかの手順が必要でした。

  • 新しいプロジェクトを作成する
  • ウィンドウコードを新しいプロジェクトにコピーします
  • コピーの名前空間を更新します
  • アプリケーションプロジェクトからウィンドウコードを削除します
  • usingアプリケーションプロジェクトの新しいプロジェクトへの参照(およびステートメント)を追加します
  • 必要に応じて、新しいプロジェクトの依存関係への参照を追加します
  • ターゲットフレームワークを更新します

どうやら、MyControlsのターゲットフレームワークは.NET Framework 4に設定されており、MyThirdWindowは.NETFramework4クライアントプロファイルに設定されていたようです。私は他のすべてのウィンドウプロジェクトにそれを設定しましたが、これを見逃しました。

ソリューションは正常に構築されました。

于 2012-12-13T13:17:31.723 に答える