重构如winForm.exe调用.DLL

时间:2013-12-03 08:51:05

标签: c#

我有一个Windows应用程序(winForms)。我想重构它,以便所有功能都构建到.DLL文件,以便在运行winForm时,它将只调用.DLL。另外,我将创建另一个.exe,这是控制台应用程序,所以当用户想要“安排任务”时,他将创建一个配置文件,运行控制台应用程序,运行时也会调用.DLL

我对重构和编译.DLL的项目知之甚少(我希望我有意义)

我只是想知道我现在对它的理解是否正确: 我应该将所有功能从winForms转移到将编译为.DLL的类吗?或者如果我错了,我应该把它放在.DLL类中?

2 个答案:

答案 0 :(得分:2)

您应该在解决方案中创建一个新项目。在Visual Studio的解决方案中创建一个类库项目(或者选择的工具,你没有指定你使用的是什么,所以我假设VS)。

要添加新项目,请右键单击您的解决方案并选择Add子菜单,然后选择New project

从左侧的类别菜单中,选择Visual C#,然后选择Windows和Class Library。

create new project dialog in VS

然后,您应该从当前的WinForms项目添加对这个新类库项目的引用。

右键单击当前WinForms项目中的References,然后选择Add reference

然后选择左侧的Solution类别(VS2012)或Projects标签(VS2010)并从那里选择新创建的类库项目。

add class library reference

然后,您可以开始将类从当前的WinForms项目移动到这个新的类库项目。类库项目将被编译为dll,您可以从WinForms项目访问此dll中的所有类。

答案 1 :(得分:2)

不需要任何戏剧性的东西。只需项目+属性,应用程序选项卡,将输出类型设置从Windows应用程序更改为类库。完成。如果您还没有这样做,则可能必须声明一个 public 类。您可以删除Program.cs源文件,因为它不再被使用,但这完全是可选的。不删除它的一个很好的理由是让你的项目可以测试。

Fwiw,实际上不需要更改输出类型设置,.NET根本不区分DLL和EXE。 CLR按其显示名称加载程序集,它不包含文件扩展名。您可以在另一个项目中添加对EXE程序集的引用,它可以正常工作。

所以什么都不做已经有效:)