我相信这是可能的,但不确定如何解决它,我需要创建一个服务器/客户端解决方案,通常我会为服务器创建一个新的解决方案,并为客户端创建一个新的解决方案,但我希望这样做在一个解决方案中,因为它们都使用相同的自定义类,并且不需要两次更改同一文件的问题。
所以问题是我可以在单个解决方案中创建多个exe,以及实现此目的的步骤是什么。
我在这里搜索但是没有完全理解这个程序,所以如果有人能指出我在一般的正确方向上会很棒。 :)
VS2010使用C Sharp和Windows Forms
答案 0 :(得分:10)
请参阅我在跨平台客户端服务器应用程序开发时提供的 this 和 this 之前的回答,特别是跨代码重用多个客户。这也适用于您的Winforms客户端服务器应用程序。
正如许多答案所说,您可以构建解决方案,以便按如下方式共享代码:
项目结构
解
.. Common(Messages,Datacontracts,Utilities)
..中间件(参考文献通用,提供共同服务)
.. .. Server Exe(参考文献Common,Middleware)
.. .. Client Exe(参考文献通用,中间件)
顶级客户端 - 服务器架构
您的筹码
客户:
客户端具有webservices / middleware的序列化,客户端实现以及视图的Model-View-Presenter patterns。
中间件:
中间件,即服务器/客户端桌面上的共享服务和数据传输实现可以是相同的。或者,您可以调用此服务。仅客户端(或仅服务器)的任何特定服务应该位于单独的程序集中,并且仅由特定的exe(客户端或服务器)引用。即不要共享未共享的代码!
消息/ DataContracts:
使用上面概述的技术在所有客户端/服务器之间共享。在您的情况下,这些可能是客户端和服务器之间共享的常见域对象
服务器:
所有业务逻辑,数据库访问和服务器端服务实现。对于DB Access,我建议PetaPoco作为优秀的MicroORM。
开发和调试
是的,解决方案可以有多个exe,只需右键单击Server Exe或Client Exe来调试其中一个,只需使用set Startup Project即可。
如果您希望一起运行客户端和服务器,您可以从命令行运行这两个并将调试器附加到两个进程。
致以最诚挚的问候,
答案 1 :(得分:2)
首先,确保您可以在解决方案资源管理器中查看解决方案文件:
转到Tools->Options
。然后在Projects and Solutions
下,确保选中Always Show Solutions
。
然后,在解决方案资源管理器(右上角,项目文件所在的位置)右键单击您的解决方案(在项目图标上方),然后单击Add->New Project
。
就解决方案的布局而言,您将拥有3个项目,客户端项目,服务器项目和共享类的类库项目。
您的客户端和服务器项目将引用库项目,请参阅:Project Reference (MSDN)
答案 2 :(得分:1)
你会这样做:
答案 3 :(得分:1)
您可以右键单击解决方案资源管理器顶部的解决方案图标,然后选择添加新项目选项。
答案 4 :(得分:1)
答案 5 :(得分:1)
单个解决方案中的多个项目没有什么特别之处 - VS 2010完全支持这一点,请参阅http://msdn.microsoft.com/en-us/library/23x5fk78.aspx。
答案 6 :(得分: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