机房收费系统代码全部实现完成,接下来就是打包、远程发布测试。本来以为打包是个很简单的事却错误百出。下面做一下打包总结。
vb.net打包完全可以用vs自带的打包工具打包:
首先打开Vs新建项目,在“已安装模板”中选择”其他项目类型“展开“安装部署”选择"Visual Studio Installer",然后在窗体的右侧就会出现安装项目、web安装项目、合并模块项目、安装向导、CAB项目等几项。由于机房收费系统是windows桌面应用程序所以选择“安装项目”。默认的项目名为Setup1,项目名可以任意更改看自己的需要。
完成上述步骤后在解决方案下边出现一个对应的项目,在解决方案资源右侧的文件系统编辑器中找到应用程序文件夹——右击——添加——文件——然后选择你的应用程序启动文件,之后vs会自动加载所有的依赖项目。
然后在解决方案资源管理器下右击Setup1选择属性,在属性窗口中选择系统必备,在系统必备窗口中选择”从我的应用程序相同的位置下载系统必备组件“,最后确定,右击Setup1生成。
图解:
上述操作完成后在项目输出文件下找到安装文件直接安装就可以。
上述步骤是打包的基本步骤,但是打包完成安装时出错。回头检验打包时加载的文件发现没有将D层生成的.DLL文件加载进去,逐个查看项目依赖发现抽象工厂的项目依赖没有D层的.DLL。后来经过查询由于D层是靠反射文件与工场产生的依赖关系所以D层需要手动加载进去。找到问题就好解决了。手动将D层生成的.DLL文件加载进去打包生成,然后安装,程序安装正常,打开发现程序报错“未找到对象应用”,查看详细信息发现错误发生在B层的一个调用工厂方法的方法上,所以判断可能还是D层反射的原因。后来经过一番查询发现打包时未将应用程序配置文件打包进去,所以在启动应用程序时反射未正常加载。在应用程序输出目录中找到应用配置文件.exe.config,打包时将其加载进去,再次安装运行,成功!
vshost.exe.config与.exe.config的区别:
vshost.exe.config文件与.exe.config文件中的内容是一模一样的,不同的是.exe.config是EXE软件的配置文件,而vshost.exe.config是VS的一项功能,是为了提高调试性能,而 生成的支持文件,msdn上指出是宿主进程。这样就说明,在最后打包的时候,只需要包括.exe.config文件而不需要包括vshost.exe.config文件。用vs调试的时候,发现会修改vshost.exe.config中的对应项,.exe.config中的对应项是不会修改的,这样会导致在软件重启的情况下,.exe.config中的旧信息会覆盖vshost.exe.config的新信息。