一、使nopcommerce支持中文的PDF导出
复制本机c\windows\fonts\下的黑体,到App_Data\Pdf目录,删除FreeSerif.ttf,将复制过来的文件命名为FreeSerif.ttf。
二、汉化插件名称FriendlyName
nopcommerce虽然有汉化包,但是并没有汉化插件部分,我们在后台管理——配置——插件,插件全部显示英文名称及说明,可以将其汉化,打开Plugins/下面的项目,选择项目中的 Description.txt 文件,例如:FriendlyName: AliPay 可以将 AliPay改为 支付宝,这样在支付的时候,支付名称就显示支付宝,而不是AliPay。
三、增加在国内常用的支付方式
1、支付宝插件
官方可以直接下载,直接附加到项目即可。
2、网银在线插件,2.6版本的网银在线支付插件,需要修改才能支持2.7版本,修改如下:
打开网银在线插件文件ChinabankPaymentProcessor.cs,找到 public decimal GetAdditionalHandlingFee()方法,将其该为public decimal GetAdditionalHandlingFee(IList<ShoppingCartItem> cart)。
所有插件的Description.txt文件中的SupportedVersions:的版本号,必须为当前版本号,否则无法加载。
四、nopcommerce2.70 支持.NET4.0
2.7版本默认是需要.NET4.5,mvc4.0的环境支持,但是目前很多的空间不支持.NET.4.5,毕竟开发和部署是有区别的,我可以修改项目使其支持.NET4.0
1、在开发环境中,打开项目属性,应用程序——目标框架,选择.NETFramework 4,所有项目都这么设置,设置完之后vs会重新加载项目,所以这种方法有点麻烦。
2、也可以这样修改,在项目文件中,搜索所有的后缀名为.csproj的文件,<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>,将其改为 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>,然后再搜索所有的web.config文件,查找<compilation targetFramework="4.5">语句,将其修改为<compilation targetFramework="4.0">。 (nop.web/web.config文件 <httpRuntime targetFramework="4.5" /> 该为 <httpRuntime />)
3、查看项目文件中的引用,有些引用文件选择了.NET4.5的dll,例如:插件项目Nop.Plugin.ExternalAuth.OpenId中引用的dll文件,DotNetOpenAuth.Core.dll、DotNetOpenAuth.OpenId.dll、DotNetOpenAuth.OpenId.RelyingParty.dll的引用,将其改为net40-full的引用,项目packages文件中包含了所有的dll引用文件,其中也包含了4.0版本的引用,如果是net45-full版本的该为net40-full版本。
4、打开\Presentation\Nop.Web\Administration\Controllers\CustomerController.cs 文件,注释掉using System.Web.ModelBinding;此命名空间需要.NET4.5支持,虽然引用此空间,但并没有使用,因此注释掉不影响程序。
vs2010的用户可以使用2、3、4的步骤,vs2012的用户,1、2步骤可选,对于不愿升级vs2012的,开发的时候需要vs2010 sp1 及mvc4.0的环境,否则有些标签解析不了(默认环境是vs2012)。
五、需要注意的事项
mvc 4.0不要修改为mvc3.0,否则有些标签解析报错,而是在开发环境安装mvc 4.0,mvc不影响程序的部署环境,是在bll/目录中dll的形式引用的。
六、服务器部署
服务器的部署环境是.net4.0,在发布到服务器时,发现还会遇到一个问题
[Exception: 未能加载文件或程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) 未能加载文件或程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040) ]
查看项目文中的引用EntityFramework.dll,发现引用的是net45的版本,因为这个dll引用的地方比较多,不能只修改一个地方,引用的项目有Nop.Data 、Nop.Web.Framework 和Nop.Web 、Plugins\Nop.Plugin.Feed.Froogle、Plugins\Nop.Plugin.Shipping.ByWeight、Plugins\Nop.Plugin.Tax.CountryStateZip、Nop.Data.Tests、修改项目文件.csproj,找到
<Reference Include="EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
修改为
<Reference Include="EntityFramework"> //去掉版本号 .net45的版本号为5.0.0.0 而.net40的版本号为4.4.0.0
<SpecificVersion>False</SpecificVersion> //这个是否验证版本
<HintPath>..\..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
如何查询程序集清单
在vs.exe所在的目录下,运行ILDASM ,打开要查看的.dll 或则exe文件,双击“MANIFEST“查看,其中包含了引用的其他资源的版本号和自己的版本号。
小结:解决方案中所有的项目中,引用的程序集dll一定要相同的版本,否则会报以上的错误,”找到的程序集清单定义与程序集引用不匹配“。