一、使用项目自带的批处理文件发布
1、拿到源代码后先用vs编译生成,然后运行项目跟目录下的Prepare.dat批处理文件,会把项目重新编译(直接运行Prepare.dat会报错,提示找不到命名空间或引用文件)。
2、运行Deploy.dat批处理文件,会在该目录下生成一个Deployable文件夹,打开里面就是发布生成的网站。
自动把administration下的bin目录文件复制到web下的bin目录文件下。
3、这种发布,对于新添加的插件项目,生成的时候不能复制生成的文件,到发布的web目录中,需要手动把生成的文件复制到Plugins目录下。但是我们也可以修改项目目录build/下的nop.plugins.targets文件,所有的插件发布信息都在这里,增加新添加的插件项目,例如:
<!--支付宝支付插件-->
<MSBuild Projects ="$(MSBuildProjectFullPath)"
Targets="Plugin-CopyToWeb"
Properties="
PluginProjectName=Nop.Plugin.Payments.AliPay"/>
<!--网银在线支付插件-->
<MSBuild Projects ="$(MSBuildProjectFullPath)"
Targets="Plugin-CopyToWeb"
Properties="
PluginProjectName=Nop.Plugin.Payments.Chinabank"/>
再发布的时候,就自动包含了这两个项目生成的文件。
二、使用vs发布
1、需要把生成的Plugins(插件)目录复制到网站跟目录。
2、在网站跟目录下建立administration文件夹,发布Nop.admin选择该路径,然后把生成的bll文件复制到Nop.web/bll目录下。
3、发布之后,如果缺少文件,找到相应的文件夹,是不是发布的时候没有复制过去。例如Themes文件下的模板文件(如果没添加到项目中,会这种情况)。
4、App_Data文件夹下的InstalledPlugins.txt ,一定要复制到跟目录。
三、如何调试发布的网站:
nopcommerce发布到远程服务器,如果程序发生报错,会转向一个默认错误页面进行友好显示,但我们无法获取错误的信息,给我们搭建的时候带来了不便:
1、打开网站跟目录下的web.config文件,注释掉 <customErrors defaultRedirect="errorpage.htm" mode="RemoteOnly"><error statusCode="404" redirect="filenotfound.htm" /></customErrors> ,修改为<customErrors mode="Off"/> ,这样远程服务器上的错误就可以看到了,例如我发布之后,还报错缺少Microsoft.Web.Infrastructure.dll在bll目录下,添加缺少文件 Microsoft.Web.Infrastructure.dll,在Nop.Admin/bll目录文件中包含该文件,直接复制即可。
2、使用vs打开发布的网站进行调试,会自动修改web.config文件。
四、发布之后nopcommerce2.70报这个错误的原因:
Active tax provider cannot be loaded. Please select at least one in admin area.
是因为你安装的插件的记录文件InstalledPlugins,并没有复制到App_Data目录下,你打开管理后台配置——插件页面,显示插件都是未安装,把这文件直接复制到跟目录下,如果刷新页面还是会报错,你可以到管理后台配置——插件页面,点击重载插件,刷新首页就可以。
五、如何清理nopcommerce源代码中的一些编译文件
发布的网站文件一般不是很大,但我们项目源代码的文件挺大的,不利于我们传送
1、选择项目解决方案,右键选择批生成,点击全选——>清理,清理的结果和步骤1,这是对所有项目的清理bin\下Debug和Release目录、obj目录均清空,(一般采用这种),我试了一下清理空间100M多。
2、对单个项目清理,选择要清理的项目右击点击清理选项,也选择多个项目一并清理,会清理项目下bin\Debug文件为空,但不能清理bin\Release和obj文件夹。
3、造成的原因,因为每个项目都添加引用了其他项目或者一些dll文件,导致我们在发布生成的时候,会复制所有引用的dll文件到该项目文件下,但我们只需要Nop.web、Nop.admin生成时复制,所以我们可以让其他项目中的引用发布的时候,不复制到该项目下,选择该项目的引用文件,点击属性——复制本地 选项,我们把true改成false,再发布的时候就不会复制了。(vs中引用c盘.NETFramework默认都是不复制)
六、总结以上
1、我们在开发的时候,最好养成良好的习惯,把网站需要的文件,先添加到项目中,例如Settings.txt(数据库连接),InstalledPlugins.txt(已安装的插件)文件。
2、开发的过程,添加的资源文件通过vs添加到项目中,这样发布之后就不会缺少文件。