|
Good day all,
First of all, thanks for an excellent product. I have been following your work for some time and I am impressed.
Just a couple of hints for those who like to download the source and compile it themselves:
My build machine is a Windows 7 64bit OS with Visual Studio 2010 with SP1...FYI.
Step 1.)
If you downloaded the source and opened the solution file, first clean and rebuild the solution. A couple of errors will pop up. The first error is telling you that the Nop.Web.Framework is using a version of the assembly System.Web.Webpages that is not compatible with the version used by the referencing project. In this case, Nop.Web is referencing the project Nob.Web.Framework. If you expand the references folder of Nop.web and click on the assembly System.Web.Webpages, you will see in its properties pain, the version is 1.0.0.0. If you expand the Nob.Web.Framework references folder and click on the System.Web.Webpages assembly, you will see the version is 2.0.0.0
Aha...this is where the conflict is happening.
Step 2.)
Go ahead and remove the Nob.Web projects System.Web.Webpages assembly version 1.0.0.0, right click on references and add the .NET assembly System.Web.Webpages version 2.0.0.0. Clean the solution, rebuild and see if it does a clean build.
I got an error on the Test projects, so I unloaded them from the solution for now. My only mission is to get the platform to run, and I will worry about testing later.
Step 3.)
Clean the solution, rebuild and 3 warnings pop up. Again with the difference in referenced assemblies message. At least no errors popped up, so I can run the project for the first time.
When running the project for the first time, the code breaks with the following error:
Method 'ValidatePaymentForm' in type 'Nop.Plugin.Payments.AuthorizeNet.Controllers.PaymentAuthorizeNetController' from assembly 'Nop.Plugin.Payments.AuthorizeNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
This exception occurs in Nop.Core.Plugins.PluginManager and is as a result of the System.Web.MVC assembly version. 4.0.0.0 is used in the project, and needs to be replaced with the previous version System.Web.MVC version 3.0.0.0
The assembly is located usually in C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies
Step 4.) Replace all the referenced System.Web.MVC version 4.0.0.0 with version 3.0.0.0 in all the projects throughout the project. Including all the plugin projects, libraries and presentation projects. Copy the above path path and paste in the browse tab of the Add Reference box, much faster than scrolling to the version you are looking for in the .NET tab the whole time.
Clean, rebuild, run...
Step 5.) Alas...another compilation error. Again, we get the error of Nob.Web.Framework is using a version of the System.Web.Webpages that is not compatible with the referencing project.
Remember in step 1 we changed the System.Web.Webpages to version 2.0.0.0 of the assembly, and now its complaining about it again. What gives right?!?
So it turns out that the Telerik.Web.MVC is using the System.Web.Webpages version 1.0.0.0 assembly, and because the Telerik.Web.MVC assembly is referenced by the Nob.Web.Framework project, other projects that reference the Nob.Web.Framework assembly and System.Web.Webpages assembly will get an error.
Wow...what a mouthfull..
Anyway, change back the System.Web.Webpages assembly to version 1.0.0.0 in Nob.Web.Framework to be compatible with the System.Web.Webpages referenced by Telerik.Web.MVC.
Clean, rebuild and run...and it should take you to the installation web page of nopCommerce :) Happy days!!
But hold on a minute, why didn't the Nob.Web break like the very first time we tried to build it?
I need to check my facts on this, but what I can gather is that if Nob.Web (The initiating project) is referencing an assembly (In the case Nop.Web.Framework) that contains a reference to an assembly also referenced by the Initiating project, the Initiating projects version of the referenced assembly needs to be equal or higher than that of the referenced embedded assembly.
Say whaaaat....
In english.... Nob.Web is referencing System.Web.Webpages version 2. Nob.Web.Framework is referencing System.Web.Webpages version 1 Nob.Web.Framework is referencing Telerik.Web.MVC which in turn is referencing System.Web.Webpages version 1.
Because the Nob.Web project is calling/referencing the Nob.Web.Framework project, the Nob.Web's version of the System.Web.Webpages version needs to be equal (to all instances of the assembly) or greater that the other System.Web.Webpages assemblies referenced downstream....in this case, version 2 is fine.
Hope this helps some folks.
Cheers.
|