最佳实践:如何组织Visual Studio解决方案

8

我需要关于Visual Studio解决方案和项目组织的帮助。

我有一个包含多个项目的解决方案。它们都是用C#编写的,并编译为库以供GUI使用。其中一些库也依赖于其他库。例如,TestExecutive需要LoggingFramework,Communications也需要LoggingFramework。

最好的组织方式是什么?我考虑创建一个名为assemblies的文件夹来放置库的二进制文件。类似于:

Solution
    |
    |-- TestExecutive
    |-- LoggingFramework
    |-- assemblies

还有一个问题。其中一个项目使用本地的C dll。我应该把这个库放在哪里?与库的程序集一起还是与最终可执行文件一起?
编辑:
好的,现在假设我运行WinForms程序。我混合了源代码和二进制文件。我需要生成什么功能才能分发呢?我的意思是,所有的库和配置文件都要有,但没有源代码。我以前用过Nullsoft安装程序来完成这个任务,但我不知道Visual Studio是否可以帮助你完成这个任务。

1
你的项目类型之一是安装程序项目。只需将其添加到解决方案中即可。网络上或MSDN上有很多教程。 - Clyde
有没有完整的源代码示例,可以作为最终解决方案? - Kiquenet
2个回答

8

以下是需要注意的几点:

  1. 当一个项目依赖于另一个项目时,您可以在Visual Studio中设置这种依赖关系。右键单击项目,选择“项目依赖项...”

  2. 对于不属于您解决方案的其他.NET程序集(第三方工具等),我会像您在此处展示的那样 - 我有一个与项目平行的单独文件夹。然后,在每个项目中设置程序集引用,并将“Copy Local”设置为true,它就能正常工作了。

  3. 对于本地C dlls,情况略有不同。解决方案资源管理器中没有直接引用它们的引用部分。编译器不会查看dll以检查您的p/invoke引用或类似的内容。您只需要确保该dll是您顶级Web或Winforms项目部署的一部分。它就像css文件或图像文件一样的内容文件。只需将其添加为项目中的文件,并确保“Build Action”设置为Content,以便Visual Studio知道将文件复制为部署的一部分即可。


5

我将解决方案文件夹设置得与您略有不同。在顶层,我有以下文件夹:

\build
\lib
\src

构建文件夹包含构建脚本(NAnt,MSBuild等)。任何第三方程序集(或我未在解决方案中构建的任何内容)都会放入lib文件夹中的适当子文件夹中。例如,我将在lib文件夹中拥有log4net、NUnit、RhinoMocks文件夹,每个文件夹都包含该依赖项所需的文件。src文件夹包含解决方案和所有项目文件。
我喜欢这种结构,因为它清楚地区分了项目代码和项目所需的其他内容。此外,我通常设置一些自定义构建任务,将我的项目的生成程序集复制到deploy或lib文件夹中。这样,您就不必在src\bin\文件夹中寻找已构建的程序集或整个项目;但是这似乎超出了您的问题范围。
顺便说一句...我不是自己想出这个结构的,我认为我最初使用Tree Surgeon并从那里发展了我的过程。

不超出编辑范围;-) 感谢提供的信息。 - yeyeyerman
我花了一些时间才找到那些帖子。你可以在这里找到它们:https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/。 - Ryogi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接