我需要一些关于Visual Studio解决方案和项目组织的帮助。
我有几个项目的解决方案。所有这些都是用C#编写的,并编译为GUI供GUI使用。其中一些库也与其他库有依赖关系。例如,TestExecutive需要LoggingFramework,Communications也需要LoggingFramework。
哪种组织方式最好?我正在考虑一个文件夹程序集来将库的二进制文件保存在一个地方。类似的东西:
Solution
|
|-- TestExecutive
|-- LoggingFramework
|-- assemblies
还有另一个问题。其中一个项目使用本机C dll。我在哪里放置这个图书馆?使用librarie的程序集还是最终的可执行文件?
修改
好的,现在假设我正在运行WinForms程序。我有源代码和二进制混合。我需要哪些功能来生成可以分发的内容?我的意思是,包含所有库和配置文件,但没有源代码。我之前使用Nullsoft安装程序完成了这项工作,但我不知道visual studio是否可以帮助你做到这一点。
答案 0 :(得分:8)
这里有一些事情:
当一个项目依赖于另一个项目时,您可以在Visual Studio中设置该依赖项。右键单击项目并选择Project Dependencies ...
对于不属于您的解决方案的其他.NET程序集(第三方工具等),我完全按照您在此处显示的内容进行操作 - 我有一个与项目并行的单独文件夹。然后我在每个项目中设置程序集引用,并将“Copy Local”设置为true,它可以正常工作。
对于原生C dll,它有点不同。在解决方案资源管理器的参考部分中没有直接引用它们。编译器不会查看dll来检查你的p / invoke引用或类似的东西。您只需要确保dll是顶级Web或winforms项目中部署的一部分。这是一个内容文件,就像一个css文件或图像或东西。只需将其添加为项目中的文件,并确保将“Build Action”设置为Content,以便Visual Studio知道只是将文件复制为部署的一部分
答案 1 :(得分:5)
我设置的解决方案文件夹与您的设置略有不同。在顶层我有以下文件夹:
\build
\lib
\src
构建文件夹具有构建脚本(NAnt,MSBuild等)。任何第三方程序集(或我未在解决方案中构建的任何内容)都会放入lib文件夹中的相应子文件夹中。例如,我将在lib文件夹中包含log4net,NUnit,RhinoMocks文件夹,每个文件夹都包含该依赖项所需的文件。 src文件夹包含解决方案和所有项目文件。
我喜欢这种结构,因为它清楚地描述了项目代码和项目所需的其他内容。此外,我通常会设置一些自定义构建任务,以将项目的结果程序集复制到\ deploy或\ lib \文件夹中。这样您就不必在\ src \\ bin \\文件夹中搜索构建的程序集或整个项目;但这似乎有点超出了你的问题的范围。
顺便说一下......我自己没有提出这个结构,我想我开始使用Tree Surgeon并从那里进化过程。