Tag Archives: Nuget

QuickBytes: Visual Studio 2013 refuses to load some projects from a VS2010 solution

Last night I opened an ASP.NET MVC project in Visual Studio 2013 that was originally created in Visual Studio 2010 and found that 4 of the six projects in the solution were not loading. This solution was working in VS 2012 earlier so I was wondering what went wrong!

After goofing around I found the Output Window (the Window menu has been split up and moved around in VS2013 – It’s at Debug->Windows->Output; Who moved my cheese!!!). On selecting Solution from the ‘Show output from’ dropdown, I saw one such error for each project that was not loaded:

C:\Users\SKM\Documents\My Projects\[redacted].csproj : error  : The imported project “C:\Users\SKM\Documents\My Projects\[redacted]\.nuget\nuget.targets” was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.  C:\Users\SKM\Documents\My Projects\[redacted].csproj

That’s when it struck me the code dump was created using the Visual Studio Extension SolZip, which excludes the .nuget folder and thus Nuget Package Restore was failing. So the fix was easy:

1. Right click on Solution
2. Enable Nuget Package Restore
3. Reload each project or save->close->and re-open solution
4. Restore Packages from Nuget and you are done!

This is more of a reminder for myself!

Tagged , , ,

A Minor Gotcha when using jquery.mobile in MVC4

Yesterday I was playing around with the jquery.mobile package from Nuget and found an interesting gotcha.

I had a project from the MVC4 WebAPI template (note: WebAPI doesn’t have anything to do with it). I wanted to add Mobile support to it, so I installed the jquery.Mobile.Mvc package through the package manager console. The idea was I would use the ViewSwitcher framework to create mobile views with appropriate extensions. But to my surprise my edit views started getting buttons that looked like Mobile buttons.

image

I also got exceptions in jquery.mobile js module like the following.

image

I started scratching my head wondering why was the mobile rendering kicking in when I didn’t have any mobile views created?

Turns out, that when you install jquery.Mobile.MVC or the standalone jquery.mobile nuget packages, the new MVC4 Bundling and minification functionality rolls up all the js files together in the _Layout.cshtml. As a result jquery.mobile kicks in and tries to convert everything into mobile layout.

image

Possible Solution

There is an easy way out.

After you have installed jQuery.mobile under the Scripts folder create a ‘Mobile’ folder and move jquery.mobile* files there.

Before                                    After   

image image

This will ensure the regular views don’t load jQuery Mobile scripts.

Now update the _layout.Mobile.cshtml to point to the updated location for jQuery.mobile scripts

image

You can do the same for the css to if you want to keep a clear separation.

Hope this helps you some head scratching. To me it seems the Nuget Package should be updated. But I’ll leave the solution to the biggies Smile.

Tagged , , , , ,

MVC3 and Telerik Grids

The Background (feel free to skip it)

As we all know in MS change is a slow process. However something is definitely wrong (in a good sense) with the ASP.NET team. They seem to be innovating at the speed of thought!

MVC is already into revision 3 and the PDC demos by Scott Hanselman are already outdated (they phased out MvcScaffold replaced it with MvcScaffolding package).

Either-ways MVC + Scaffolding + EF seemed like a very nice way to re-do the archaic 4 year old system I am currently maintaining. Whether someone needs it at work or not it is a good ‘real-world’ (as opposed to ‘hello, World’) project to take up, while learning ASP.NET MVC.

But the grid implementations out of the box is pathetic and I stumbled upon Telerik’s feature packed MVC Extensions and guess what, they have a GNU license version for you to play around with. It was even available for download through Nuget package manager. Wow!

Anything that’s too good to be true usually is…

My joy was short lived. Off the bat the new scaffolding generator refused to use the custom t4 templates (like Scott had shown). I fiddled around a little but couldn’t figure it out so left it and changed the view by hand to convert the Index page such that it uses the Telerik Grid.

Examples seemed helpful enough and slowly but surely things were falling into place when I noticed the filtering functionality was not working! Then I noticed the Popup for New/Edit was not centered and did not have correct styling (background wasn’t disabled and popup-header’s drag wasn’t working). Started digging around. View Source indicated some javascript files were missing. Added them, and BAM! Hell broke loose, jScript errors all over the place. Everything stopped working.

Retrace Steps (abandon brute force)

Registered and downloaded the latest samples from Telerik (the project had the package installed through Nuget package manager). The sample ran like a champ in local environment. Confused again!

  • Added all the latest javascripts from sample to my project
  • Added the Telerik.Web.Mvc from sample to my project (essentially replaced the reference added by Nuget)
  • Then I noticed the following little piece missing in the _Layout.cshtml

image

Even after adding it the errors continued.

Back to sample.

  • Then I noticed in the sample _Layout.chtml there were no direct references to the individual js files (from telerik). All it had was the above registration code. Light bulb moment!!!
  • Removed the direct references to the other js files and kept the registration code only. Still no luck! But this time I got an exception in the above line saying one of the js files not found under “~/Scripts/” folder. Oh Boy! All the telerik js files need to be under “~/Scripts/”. Moved them out to the  ‘Scripts’ root and changed the code to look like

image

  • Eureka moment! Finally things look the way they should.

In Conclusion

  • Telerik extensions available through Nuget (today) are not the latest (they use jquery 1.4.3 as opposed to MVC 3 using 1.4.4)
  • Download latest from Telerik.
  • You only need to register the above javascript and the rest of the scripts are registered automatically
  • All the Telerik javascripts need to be in the “~/Scripts/” folder. Don’t be fooled by the cryptic folder (like 2010.3.1110) created by Nuget. You will need them to be in the root folder.
  • Don’t rely on ‘View Source’ completely. There is still some amount of backend munging going on.
  • Unlike me start with the sample and move it to your project, not the other way round.
  • Stay tuned for T4 templates to generate views and controllers taking advantage of Telerik extensions.
  • Last but not least Telerik MVC extensions at-least for the Grid are pretty powerful and I thank Telerik for making the entire suite available under GNU license.
Tagged , , , , , , ,
%d bloggers like this: