不同解决方案中的共享项目使Visual Studio编译器失败(C#)

时间:2017-06-07 10:15:20

标签: c# visual-studio server client

我在C#中有一个服务器客户端应用程序。客户端和服务器是独立的解决方案并共享公共代码。对于开发而言,至关重要的是,共享代码在每个解决方案(.sln文件)中都可​​用,因为它不断变化。目前,共享代码作为额外项目添加。但是,当我从Visual Studio 2015运行/调试服务器和客户端时,编译器会生成(有时):

  

错误CS2012" ... \ obj \ Debug \ Tools.dll"无法打开,因为它被另一个进程阻止。

我为这两个解决方案启动了两个Visual Studio实例。据推测,Visual Studio的另一个实例是阻止.dll。重新启动/构建客户端可以解决这个问题,但不总是哪个真的很烦人。我怎么能避免这个?

2 个答案:

答案 0 :(得分:0)

@spender提出的答案似乎是这种情况的理想解决方案。 我制作了一个名为“Superbuild”的新解决方案,如下所示:

Superbuild-Project
* Client\
  * Client-project 1
  * Client-project 2
   ...
* Server\
  * Server-project 1
  * Server-project 2
   ...
* SharedProjects\
  * Shared-project 1
  * Shared-project 2
   ...

只需将所有现有解决方案文件打开到新的Superbuild解决方案中,即可轻松实现此目的。 Visual Studio 2015自动识别出两个项目被导入两次。我将它们移动到一个名为“SharedProjects”的新文件夹。要同时启动客户端和服务器,可以右键单击Superbuild解决方案并选择"Set startup projects"并选择相应的客户端和服务器项目。这样,您可以使用VS的单个实例运行所有内容,并同时调试这两个应用程序。无论如何,您始终可以返回旧的解决方案文件。非常感谢@spender分享这个!

答案 1 :(得分:0)

我通常有一个Web服务器项目,而不是访问它的台式机或移动客户端应用程序。 当我想在客户端应用程序上工作并且需要服务器在后台运行时,我将客户端应用程序运行为“无需调试即可启动”( Ctrl + Shift + < kbd> F5 )启动服务器,然后运行客户端。