Visual Studio 2013 does not support MVC 3 in a “first-class” way. Therefore, it is desirable to upgrade MVC 3 projects to MVC 4. A tool exists which is very useful to accomplish this, but some additional steps might be necessary (as we found).
Primary Web MVC 3 Project Upgrade
Open the project in Visual Studio 2013. Select the Web project. Open the Package Manager Console:
“Install” the UpgradeMvc3ToMvc4 package. Be sure “Default Project” (top bar of console) is set to the correct project!
This should complete the initial upgrade. However, you might receive a dependency error:
In this case, you can remove the conflict (replace Microsoft.AspNet.Razor with whatever the dependency error is):
Uninstall-Package Microsoft.AspNet.Razor -Force
Uninstall the package indicated in the “already referencing” error. Ignore the warnings about breaking packages. Then try the upgrade again. You may need to uninstall several packages before the install succeeds.
Upgrading Unit Test Project References
If any unit test projects or other dependency projects exist, they will need to be upgraded as well. Change “default project” on the top bar of the package manager console to these projects and run the install command again.
Some errors may happen here, generally this is OK. The main point is to update the references automatically. If this does not succeed, these references are relatively easy to update manually. Make them match those in the web project (which was already upgraded).
Attempt to “Rebuild Solution”. It should be successful (no errors). Check for Model intellisense in the view. Should work. Run all tests. Should pass.
Reset Windows Authentication Mode
Go to web project’s primary Web.config (in the root of the web project).
In the “AppSettings” section, add the following two lines:
<add key="autoFormsAuthentication" value="false" /> <add key="enableSimpleMembership" value="false"/>
This is to switch back to Windows authentication. Otherwise the app will try to use forms authentication even if it previously used Windows authentication.
Ensure IIS Express is set to Windows authentication
If this is your first web project in Visual Studio 2013, you may also need to configure IIS express to support Windows Authentication. Follow these instructions: http://stackoverflow.com/a/19515891.
You only need to do that once per machine.