Orchard Module not using updated nuget package - orchardcms

I am encountering an issue when I upload my module's nuget package to a production environment. When I package my module up into a nuget package and then open it locally, in NuGet package explorer, it has "Mcrf.ProfilesWeb.Contracts, Version=1.0.1.1" inside.
When I install my module package on the Orchard CMS, my page fails and when checking the error log, I see:
"System.TypeLoadException: Could not load type 'Mcrf.ProfilesWeb.Contracts.ProfileList' from assembly 'Mcrf.ProfilesWeb.Contracts, Version=1.0.0.4, Culture=neutral, PublicKeyToken=null'."
I've ensured numerous times that the module package is 100% correct, it seems as though the production environment Orchard site doesn't update the contract when installing.
Any help would be much appreciated.
Thank you,
Roka

You probably have a different version of ..ProfileList in your production environment than you do in your development environment

Since I was hosting my website using Azure Web App, the resolution was to restart the Web App. It seems Orchard somehow caches DLLs and that's why it continued to use an old version; restarting forced to look for the updated one.

Related

Microsoft.SqlServer.Types: Are native libries for SQL Server preinstalled on Azure?

I just upgraded my app to use the latest Microsoft.SqlServer.Types package v14 from v13. This resulted in an well-documented runtime error. The reason here would be missing native libraries:
Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found
The Nuget package also contains the native DLLs that were missing, so I could theoretically copy them to my bin folder and load them through my code, but:
I didn't have to do that with my v13 binaries
When I deployed the updated project to Azure, it ran just fine.
My current assumption would be that I got the v13 binaries with my local SQL install, and on Azure, those binaries (both v13 / v14) are preinstalled.
However, when googling a bit about the issue, most developers have the opposite problem of things not working on Azure due to the missing libs, so I wonder whether not going the manual route might be dangerous with regards to Azure deployments. If anybody had some insight here, that would be awesome!
As far as I know, the azure web service install the SQL server SDK version is 9.0 - 13.0. So you need install 14.0 by yourself.
You could find the dll in the kudu console in your web service.
D:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies>
To open the kudu you could refer to below steps:
1.Find the Advanced Tools in DEVELOPMENT TOOLS click go.
2.Click dubug console's cmd.
3.Find the path.
Notice: You need firstly type cd.. to locate the root path.
You could find the Microsoft.SqlServer file as below:

ServiceStack set up packages

I'm trying on ServiceStack but getting stuck in the installation. Can I ask what's the correct packages to install? For a very simple tutorial on Pluralsight.
It doesn't seem to allow me to enable using ServiceStack.Interfaces or using ServiceStack.ServiceInterface in my application. Even though those are right there in the References.
I have installed ServiceStrack, ServiceStack.Host.MVC, ServiceStack.Host.AspNet and more.
Assuming you want to build just minimal web-service, you do not need to install Host.MVC or Host.AspNet, just install the minimal package using NuGet Package Manager like this:
Install-Package ServiceStack
After that you can use this guide to configure your newly ServiceStack Web-Service.
The easiest way to install ServiceStack is with ServiceStackVS VS.NET Extension which will download the right packages for each project type. See this guide on Creating your first project with ServiceStackVS.
If you want to add packages manually to a normal ASP.NET Web Application please see Creating a Service from Scratch.

Adding Packages to build so nuget doesn't need to retrieve each build

I will explain this as best I can!!
I have a large project with a build that kicks off automatically after each checkin. This normally works fine, but this is the first time I have attempted a build that has included code using a library other than those already in the solution.
I have added the Microsoft antixss library (I got it through nuget on my local dev machine). When I checkin, the build fails as nuget on the build server is having trouble getting out to nuget through our proxy.
Obviously the best solution is to get this issue resolved, but it brings up a question of resilience - if our connection to the outside world is mashed, can I not do any builds?
This led me to thinking, is it possible to add libraries such as this antixss to the defaults that always appear in my build servers packages (like jquery etc?). Each build, this packages folder is cleared and replaced by the build process. At the moment, every-time I build the build breaks due to the proxy issue.
I really need to get a release out today, so was wondering if anyone could help me here? It seems silly that I need to go out to Nuget as the library exists on my local!!
Many Many thanks
Install your own nuget server behind the firewall/proxy and point to that as your default NuGet server.
I've used the free version of ProGet in the past as an easy to run a nuget server that also acts as a caching proxy for the main nuget gallery. It also means that if the main nuget server or your internet connection is down you will still have a nuget server that your build can connect to.

NuGet : How to keep package versions consistent across several solutions?

We're building a set of several services, each service has it's own solution with associated projects. Many of these services rely on the same NuGet packages.
All the solutions have "Package Restore" enabled.
Some of the solutions refer to assemblies owned by other solutions, this is one obvious reason why we need all the solutions to refer to exactly the same versions of different NuGet Packages.
All of the services need to work together to achieve an end result. They're packaged and installed as part of a single product, which is another reason we'd like everything to be running off the same versions of the NuGet Packages
We're having trouble keeping package versions consistent between Solutions.
Currently we're manually checking and updating package versions, we're also getting occasional compilation errors because projects in one solution end up referring to different versions of the same package.
Is there a recommended way of doing this (hopefully an automatic process)?
Would we be better off without Package Restore?
Anyone have any general advice on the subject?
Thanks
Update: I created an issue for this on the NugGet project http://nuget.codeplex.com/workitem/2623
To solve this:
Create your own private NuGet server (see 1 and 2) that hosts the correct versions of the packages you use.
Configure each build system to use that server and auto update to the latest version.
Although this requires a server, it not only ensures everyone has the correct version but speeds up the downloads for build servers as well.
You could configure your TFS builds to update all NuGet packages in the solution to their latest versions using the nuget update command.
The latest versions could be from nuget.org, a local NuGet server or even a network share. Use the source parameter to define the sources you want to update from.
You can perform the build configuration via MsBuild proj files or via a TFS template.

orchard cms: module package not installing

Setup:
I have created a module that works fine in the solution where it was created, ie, the orchard source code. I then package it up using package create.
Edit: I now realize that the problem appeared IMMEDIATELY after installing visual studio 2012.
Problem:
If I now install the module on a different app using the package and install from file, all the alerts show the module is installed, it appears in the features list, it is enabled... but there are no menu items, no entry in the migrations table, nothing.
Edit: Nothing appears in the logs. The files are, however, installed correctly in the modules folder of the site.
Question:
What could be going wrong that stops the module being properly installed using the package given that the module works fine in the source code solution where it was created??
Any suggestions?
Edit:
How could installing visual studio 2012 have affected Orchard?
I notice that installing visual studio 2012 resulted in various bits of sql server 2012 being installed at the same time. Could this be relevant? EG, is this why the migrations code never runs?
Edit on the basis of Bertrand Le Roy's comments (see below this question):
BertrandLeRoy says that having ASP.NET MVC 4 installed in the GAC, as well as Razor 2 (both of which came with VS 2012), is the problem.
He suggests upgrading to Orchard 1.5.x.
However:
I have tried using a new install of Orchard 1.5.1, and the problem is the same:
Creating a new module using VS 2012 and Source Code for Orchard 1.5.1 and the module appears correctly when running the orchard site from VS.
Creating a package and then installing that into an Orchard 1.5.1 site, eg, using WebMatrix, running and then installing the package has the following effect:
2.1. The alerts in the dashboard tell me that the package has installed correctly.
2.2. However, enabling the feature does nothing.
2.3. This is hardly surprising, as installing the package has not even run the migrations.
The last test I can do is to see if the package runs on a web server that doesn't have asp.net mvc4 installed. I will post back once that is done.
However, the main point is that using Orchard 1.5.1 produces the exact same result. So, if the problem really is the fact that MVC 4 and Razor 2 are on the machine, then Orchard 1.5.1 is not solving it.
Ie, what will happen when I install mvc 4 on the web server as I will inevitably have to for other, non Orchard apps?
I experienced the same thing on version 1.8.1. That is, the module appeared to install fine, but it didn't actually perform migrations or load correctly.
Initially, I saw nothing in the log to indicate a problem. However, after adjusting the /Config/log4net.config file to log ALL instead of just ERROR messages. I got this:
... Orchard.Environment.Extensions.Loaders.PrecompiledExtensionLoader -
- Extension "Transformalize" will not be loaded as pre-compiled extension
because one or more referenced extension is dynamically compiled
The part saying my module "will not be loaded as pre-compiled extension because one or more referenced extension is dynamically compiled" seemed to explain why my module wasn't loading. So, I Googled and found this documentation regarding the Orchard module loader and dynamic compilation. It's a bit complicated at 2 AM, but what I gathered is my module's reference to another module (Orchard.Autoroute in this case) caused the log message (above) in the production environment. I removed my module's reference and dependency on Orchard.Autoroute, and then it installed fine.
The documentation explains how modules are dynamically compiled and how the settings in /Config/HostComponents.config can change how things work.

Resources