Visual Studio中单个C#项目的多个可执行文件

And*_*ndy 5 c# visual-studio-2010

我目前只有一个项目的单一解决方案,这将生成可执行的A.EXE.该项目包含数十个C#源文件,表单等.

我现在需要生成可执行文件B.EXE和C.EXE.B.EXE将使用大约95%的代码库用于A.EXE(即功能的子集).C.EXE将使用大约80%的B.EXE代码库(即另一个子集).

为此设置Visual Studio和我的项目/解决方案的推荐方法是什么?我正在使用2010,但我认为这可能是一个通用的Visual Studio问题.

我的担忧:

  • 使用预处理器似乎没有办法更改输出可执行文件的名称.也可能无法排除整个文件,我必须离开类接口并定义代码?

  • 为B.EXE和C.EXE创建项目并链接源文件我担心这三个项目变得不同步太容易了.假设我将一个新文件foo.cs添加到一个项目中,我可能需要记住将其添加到其他项目中并记住使用链接,以便不复制该文件.

  • 我担心将我的项目分成多个组件将使管理,调试和记住在哪里定义的内容变得困难.我担心我最终会得到十几个令人困惑的集会,而不仅仅是一小撮.

感谢您的意见和建议.我确定这是一个常见的问题.

谢谢,安迪

Mar*_*k H 5

您使用类库来包含每个应用程序之间通用的代码.在每个应用程序中,您都可以添加对该类库的引用,并且可以使用其中的所有可公开访问的代码.(您将无法使用内部类型,如果您不添加公共内容,则默认为内部类型).

类库应包含在3个应用程序之间不会更改的代码,或者如果发生轻微更改,您应该抽象代码足以支持它们之间的差异.复制粘贴是一个可怕的想法,但如果你必须使用3规则 - 尽管更好的代码只有一次而且只有一次.

将代码拆分成多个程序集并不会使管理变得困难 - 我发现它恰恰相反.您可以将每个类库视为同一项目的单独文件夹,而您只是从每个文件夹中获取代码.但不同的是,您不能在程序集之间意外引入循环依赖关系,这有助于您以足够抽象的方式设计代码以支持所有3个项目,而不依赖于任何特定代码中的代码.