Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重构,例如winForm.exe调用.DLL_C# - Fatal编程技术网

C# 重构,例如winForm.exe调用.DLL

C# 重构,例如winForm.exe调用.DLL,c#,C#,我有一个windows应用程序winForms。我想重构它,使所有功能都构建到.DLL文件中,这样当winForm运行时,它将只调用.DLL。此外,我将创建另一个.exe,它是控制台应用程序,因此当用户只想调度任务时,他将创建一个配置文件来运行控制台应用程序,运行时还将调用.DLL 我没有太多关于重构和编译项目到.DLL的知识,我希望我说的有道理 我只是想知道我现在对它的理解是否正确: 我是否应该将所有功能从winForms转移到将编译为.DLL的类?或者,如果我错了,我应该在.DLL类中放入什

我有一个windows应用程序winForms。我想重构它,使所有功能都构建到.DLL文件中,这样当winForm运行时,它将只调用.DLL。此外,我将创建另一个.exe,它是控制台应用程序,因此当用户只想调度任务时,他将创建一个配置文件来运行控制台应用程序,运行时还将调用.DLL

我没有太多关于重构和编译项目到.DLL的知识,我希望我说的有道理

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

您应该在解决方案中创建一个新项目。在VisualStudio或您选择的工具中的解决方案中创建类库项目,您没有指定要使用的内容,因此我假设VS

若要添加新项目,请右键单击解决方案并选择“添加”子菜单,然后选择“新建项目”

从左侧的“类别”菜单中,选择Visual C,然后选择Windows和类库

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

在当前WinForms项目中的引用上单击鼠标右键,然后选择“添加引用”

然后选择左侧VS2012或项目选项卡VS2010上的解决方案类别,并从中选择新创建的类库项目


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

您应该在解决方案中创建一个新项目。在VisualStudio或您选择的工具中的解决方案中创建类库项目,您没有指定要使用的内容,因此我假设VS

若要添加新项目,请右键单击解决方案并选择“添加”子菜单,然后选择“新建项目”

从左侧的“类别”菜单中,选择Visual C,然后选择Windows和类库

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

在当前WinForms项目中的引用上单击鼠标右键,然后选择“添加引用”

然后选择左侧VS2012或项目选项卡VS2010上的解决方案类别,并从中选择新创建的类库项目


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

无需任何改动。只需在“项目+属性”的“应用程序”选项卡上,将“输出类型”设置从Windows应用程序更改为类库。完成。如果尚未将类声明为public,则可能必须将其声明为public。您可以删除Program.cs源文件,因为它将不再使用,但这完全是可选的。不删除它的一个很好的理由是保持项目的可测试性

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


所以什么都不做已经奏效了:

不需要什么戏剧性的事情。只需在“项目+属性”的“应用程序”选项卡上,将“输出类型”设置从Windows应用程序更改为类库。完成。如果尚未将类声明为public,则可能必须将其声明为public。您可以删除Program.cs源文件,因为它将不再使用,但这完全是可选的。不删除它的一个很好的理由是保持项目的可测试性

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


因此,什么都不做已经奏效了:

将UI内容放在表单中,并将算法、数据等放在DLL中。无论如何,这是一个很好的设计原则——让GUI尽可能精简,并将逻辑和数据分离出来。在修改项目之前,你一定要做一些实验和研究,创建和使用DLL。将UI内容以表单的形式放入DLL中,并将算法、数据等放入DLL中。不管怎样,这是一个很好的设计原则——让GUI尽可能精简,并将逻辑和数据分离出来。在修改项目之前,您肯定应该做一些实验和研究,创建和使用DLL。