4

これは可能だと思いますが、回避方法がわからないため、サーバー/クライアントソリューションを作成する必要があります。通常は、サーバー用の新しいソリューションとクライアント用の新しいソリューションを作成しますが、これを1つのソリューション内で実行したいと考えています。どちらも同じカスタムクラスを使用していて、同じファイルを2回変更する必要があるという問題を実際には望んでいないため、解決策です。

したがって、問題は、単一のソリューション内に複数のexeを作成できるかどうか、およびこれを実現するための手順は何かということです。

私はここで検索しましたが、手順を完全には理解していないので、誰かが私を一般的に正しい方向に向けることができればそれは素晴らしいことです。:)

CシャープとWindowsフォームを使用したVS2010

4

7 に答える 7

10

クロスプラットフォームのクライアントサーバーアプリケーション開発、特に複数のクライアント間でのコードの再利用について私が与えたこれと以前の回答を参照してくださいこれは、こちらのWinformsクライアントサーバーアプリにも当てはまります。

多くの回答が言っているように、次のようにコードを共有するためにソリューションを構造化することができます。

プロジェクト構造

ソリューション
..共通(メッセージ、データコントラクト、ユーティリティ)
..ミドルウェア(参照共通、共通サービスを提供)
.. ..サーバーエグゼ(参照共通、ミドルウェア)
.. ..クライアントエグゼ(参照共通、ミドルウェア)

トップレベルのクライアントサーバーアーキテクチャ

クロスプラットフォームのアプリケーションスタック

あなたのスタックは

クライアント:

クライアントには、シリアル化、Webサービス/ミドルウェアのクライアント側実装、およびビューのModel-View-Presenterパターンがあります。

ミドルウェア:

ミドルウェア、つまりサーバー/クライアントデスクトップでの共有サービスとデータトランスポートの実装は同じにすることができます。または、このサービスを呼び出すこともできます。クライアントのみ(またはサーバーのみ)の特定のサービスは、個別のアセンブリに入れて、特定のexe(クライアントまたはサーバー)によってのみ参照される必要があります。つまり、共有されていないコードを共有しないでください!

メッセージ/DataContracts:

上で概説した手法を使用して、すべてのクライアント/サーバー間で共有されます。あなたの場合、これらはクライアントとサーバー間で共有される共通のドメインオブジェクトである可能性があります

サーバ:

すべてのビジネスロジック、DBアクセス、およびサーバー側のサービスの実装。DBアクセスの場合、優れたMicroORMとしてPetaPocoをお勧めします。

開発とデバッグ

はい、ソリューションには複数のexeを含めることができます。サーバーExeまたはクライアントExeを右クリックしてスタートアッププロジェクトを設定するだけで、どちらか一方をデバッグできます。

クライアントとサーバーを一緒に実行する場合は、コマンドラインから両方を実行し、デバッガーを両方のプロセスに接続できます。

よろしくお願いします、

于 2012-01-23T16:22:45.003 に答える
2

まず、ソリューションエクスプローラーでソリューションファイルが表示されることを確認します。

に移動しTools->Optionsます。次に、アンダーProjects and SolutionsエンシュアAlways Show Solutionsがチェックされます。

次に、ソリューションエクスプローラー(右上、プロジェクトのファイルがある場所)で、ソリューション(プロジェクトアイコンのすぐ上)を右クリックし、をクリックしますAdd->New Project


ソリューションのレイアウトに関しては、クライアントプロジェクト、サーバープロジェクト、および共有クラスのクラスライブラリプロジェクトの3つのプロジェクトがあります。

クライアントおよびサーバープロジェクトはライブラリプロジェクトを参照します。プロジェクトリファレンス(MSDN)を参照してください。


参照:マルチプロジェクトソリューション(MSDN)

于 2012-01-23T16:20:12.333 に答える
1

単一のソリューション内の複数のプロジェクトについて特別なことは何もありません。VS2010はこれを完全にサポートしています。http://msdn.microsoft.com/en-us/library/23x5fk78.aspxを参照してください。

于 2012-01-23T16:21:49.007 に答える
1

あなたはこのようにそれをするでしょう:

  1. 1つの解決策があります
  2. ソリューションに3つのプロジェクトを追加します。
    1. プロジェクトA:サーバーexe
    2. プロジェクトB:クライアントexe
    3. プロジェクトC:プロジェクトAとBが使用するクラスを含むクラスライブラリプロジェクト。
  3. プロジェクトAとBを参照プロジェクトCにする
于 2012-01-23T16:20:42.160 に答える
1

ソリューションエクスプローラーの上部にあるソリューションアイコンを右クリックして、[新しいプロジェクトの追加]オプションを選択できます。

于 2012-01-23T16:20:55.820 に答える
1
  1. ソリューションに新しいクラスライブラリプロジェクトを追加します。そこにあなたの共通のコードを入れてください。
  2. 必要な数のWinFormsプロジェクトをソリューションに追加します。
  3. クラスライブラリプロジェクトへの参照をwinformsプロジェクトに追加します。
于 2012-01-23T16:21:00.233 に答える
1

同じプロジェクト複数のソリューションに追加することもできます。サーバーとクライアントの両方を単一のソリューションに出力する必要はありません。

つまり、これらがサーバーとクライアントの両方で使用するプロジェクトである場合は、次のようになります。

Project A: CoreClasses
Project B: Entities

次に、それらを両方のソリューションに追加するだけです。

 + Solution 1: Server
   +- Project A: CoreClasses
   +- Project B: Entities
   +- Project C: ServerSpecific -> output

 + Solution 2: Client
   +- Project A: CoreClasses
   +- Project B: Entities
   +- Project D: ClientSpecific -> output

あなたtrunkの場合、次のようになります。

 /trunk/
 /trunk/ProjectA/
 /trunk/ProjectB/
 /trunk/ProjectC/
 /trunk/ProjectD/
 /trunk/ClientSolution.sln
 /trunk/ServerSolution.sln
于 2012-01-23T16:27:03.460 に答える