如何在程序集中包含来自另一个命名空间的类而不是将它们写入单独的DLL文件?

时间:2012-08-13 09:28:38

标签: c# namespaces

我有一个带有两个命名空间的C#项目。 GUI(Stoff3GUI作为命名空间),带有GUI xaml.cs文件,标记为起始对象和库(Stoff3Lib作为命名空间),所有类都在实际执行工作

现在,当我编译代码时,我会收到.exe个文件Stoff3GUI.exe.dll Stoff3Lib.dll。在Visual Studio中,两个名称空间都是同一项目的一部分。

如何在不生成单独的Stoff3Lib文件的情况下将.exe中的类编译到.dll文件中?

修改

xxx更改为我的项目名称Stoff3,以便更好地理解。

3 个答案:

答案 0 :(得分:0)

如果两个名称空间都属于同一个项目,那么您应该只能获得一个程序集。

这可能与Web项目设置不同(各种不同风格的Web项目以时间和方式创建程序集,我从未理解)但是对于独立的可执行项目,它实际上是“一个项目产生一个程序集”在所有情况下到目前为止我知道。仔细检查您实际上只有一个项目 - 例如,项目中不应该有任何引用xxxLib程序集。

答案 1 :(得分:0)

我不完全确定你在这做什么。听起来你可能只有一个带有两个项目的“解决方案”我的想法只是将你想要的类移到GUI启动项目中并删除另一个项目。

答案 2 :(得分:0)

我相信你真正拥有的是1个带有2个项目的Visual Studio解决方案。

由于一张图片值1000字,只是为了清理术语,这就是VS2012中的样子:

TwoProjects

此解决方案的输出正是您所描述的:

  • TwoProjects \ Stoff3GUI \ BIN \调试\ Stoff3GUI.exe
  • TwoProjects \ Stoff3Lib \ BIN \调试\ Stoff3Lib.dll

enter image description here

实现所需内容的最简单方法是拥有一个包含2个不同命名空间的VS项目。最好添加符合预期命名空间结构的文件夹,例如Stoff3GUI和Stoff3Lib:

enter image description here

编译此解决方案时,输出将是单个EXE,但您仍然可以在文件夹/文件结构中非常清晰地保持模型和视图命名空间的分离:

  • OneProject \ BIN \调试\ OneProject.exe

enter image description here