4

I believe this is possible but unsure how to go around it, I need to create a server/client solution, normally I would create a new solution for the server and a new one for the client however I am looking to do this within a single solution as they would both be using the same custom classes and don't really want the issue of having to change the same file twice.

So the question is can I create multiple exe's within a single solution and what are the steps to achieve this.

I have searched on here but don't fully understand the procedure so if someone can point me in the general right direction it would be great. :)

VS2010 using C Sharp and Windows Forms

4

7 回答 7

10

请参阅我在跨平台客户端服务器应用程序开发中给出的这个以前的答案,特别是跨多个客户端的代码重用。这也适用于您的 Winforms 客户端服务器应用程序。

正如许多答案所说,您可以构建解决方案以共享代码,如下所示:

项目结构

解决方案
.. Common (Messages, Datacontracts, Utilities)
.. Middleware (References Common, 提供公共服务)
.. .. Server Exe (References Common, Middleware)
.. .. Client Exe (References Common, Middleware)

顶级客户端-服务器架构

跨平台应用栈

你的堆栈变成

客户:

客户端具有序列化、Web 服务/中间件的客户端实现以及视图的 Model-View-Presenter 模式

中间件:

中间件,即服务器/客户端桌面上的共享服务和数据传输实现可以相同。或者,您可以调用此服务。仅用于客户端(或仅用于服务器)的任何特定服务都应放在单独的程序集中,并且仅由特定的 exe(客户端或服务器)引用。即不共享未共享的代码!

消息/数据合同:

使用我上面概述的技术在所有客户端/服务器之间共享。在您的情况下,这些可能是客户端和服务器之间共享的公共域对象

服务器:

所有业务逻辑、数据库访问和服务器端服务实现。对于 DB Access,我推荐PetaPoco作为出色的 MicroORM。

开发调试

是的,一个解决方案可以有多个 exe,只需通过右键单击 Server Exe 或 Client Exe 来使用set Startup Project来调试其中一个。

如果您希望同时运行客户端和服务器,您可以从命令行同时运行并将调试器附加到这两个进程。

此致,

于 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

你会这样做:

  1. 有一个解决方案
  2. 将三个项目添加到解决方案中:
    1. 项目 A:服务器 exe
    2. 项目 B:客户端 exe
    3. 项目 C:一个类库项目,包含项目 A 和 B 使用的类。
  3. 使项目 A 和 B 参考项目 C
于 2012-01-23T16:20:42.160 回答
1

You can right click on solution icon located at the top in the solution explorer and choose add new project option.

于 2012-01-23T16:20:55.820 回答
1
  1. Add a new Class Library project to your solution. Put your common code in there.
  2. Add as a many WinForms projects you need to your solution.
  3. Add references to the Class Library project to your winforms projects.
于 2012-01-23T16:21:00.233 回答
1

单个解决方案中的多个项目没有什么特别之处 - VS 2010 完全支持这一点,请参阅http://msdn.microsoft.com/en-us/library/23x5fk78.aspx

于 2012-01-23T16:21:49.007 回答
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 回答