解决:使用VS做窗体应用程序(WinForm),程序完成后途中使用到的dll库不会包涵进exe文件里。
如题,在用VS开发WinForm程序时,最后程序完成,期间使用到的dll库不会包涵进exe,要想发布给其他人使用,就得把这些dll库一并打包发给其他人,别人才能正常运行,这样就会非常麻烦。如下图:
程序途中使用到的dll就会一并放在程序编译导出目录,且你想在别的地方使用,还必须得把该dll一并放在同一目录。
举个例子:我想把该程序放在桌面运行,我单独把 WinFormTest.exe 文件复制到桌面是运行不了的(闪退,报错,或者直接打不开都是正常现象,就算看起来没报错,你正常打开了,实际用到该dll里的函数的地方就会崩溃或失效),所以需要把该dll一并复制到桌面,此时,你就会发现该程序能正常运行了。
但是这样就会很麻烦,理应我程序运行就只需要一个exe文件就行了,无论我放那个目录,或者发给其他任何人,都只需要一个exe就行了,这样才对,这样才简便。
所以此文,我们来解决该问题。
一:在解决方案右键 —> 管理解决方案的 NuGet 程序包。如图:
二:在浏览窗口搜索:Costura.Fody 插件,然后下载安装。如图:
三:安装完成后,再次编译程序生成,就会发现编译完成后的exe目录下已经没有dll库了,且该程序复制到任意目录都可正常运行,至此,目的达成。如图:
PS:这样操作后,dll不见了,程序也可正常运行,但可以明显的看到,该exe文件大小变大了,从原来的7K变为78K了。原因是把dll打进了exe导致的。