Nuget Package Errors DNX451 & ASP.net 5.0

We've been early adopters of Asp.Net 5.0 and MVC6 by using the framework for an A/B test that we are performing.

One thing that has been most apparent is the impact of nuget packages in the application and more specifically the nightmare that can unfurl when with nuget packages can't be found and and the project won't build.

The key thing that took me a while to figure out is that using the command line along side the Visual Studio tools is imperative to getting the application to build correctly against the correct version of the framework.

In the early stages of the framework when the Beta releases are being released against a consistent release cycle it's important to know the few key commands to get you through the pain that can occur when you aren't aware of whats going on with your packages.

What we've found is that right clicking on the project and selecting "restore packages" can sometimes work but many times just fails.

In the instances where the application won't build, there are a few steps we can take to get the application to work, this is really important in the case where you might have upgraded your application to the latest beta but the rest of the team you work with haven't.

If you haven't set up the visual studio command line you can find the details on how to do this here;

http://docs.asp.net/en/latest/getting-started/installing-on-windows.html

I always start by navigating my powershell location to the project in question.

The first step I get the guys to do when something won't build is:

dnvm upgrade - this will upgrade the dotnet version manager to include all of the latest versions of the framework.

Once we have all the versions we should choose the version that we wan't to use our project by executing:

dnvm use --version 1.0.0-beta8 (with the version being the version you wish to use against your project).

Performing dnvm list should show the list of current projects and you should see a star next to the project you've set for usage.



Once we have selected the version that we want to use, we need to make sure that the packages in our application are correct and matching the version of the runtime that we are using.

In order for this to work we need to ensure that all of our nuget package locations are in check, the locations I have setup in my global nuget config are as follows:

 <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" />
    <add key="Roslyn" value="https://www.myget.org/F/roslyn-nightly/" />
    <add key="DotNet" value="https://www.myget.org/F/dotnet-corefx/" />
  </packageSources>

You can find the global nuget file at: C:\Users\<your account>\AppData\Roaming\NuGet.

The final step to run is the restoration of the nuget packages by running the following command in the project directory location:

dnu restore --no-cache

This should restore all of the packages to their correct state with the correct versions of the packages for the currently selected runtime. from here we can navigate back to Visual Studio, rebuild our project and all of our dependency errors should disappear!




2 comments:

  1. There seems to be an issue where dodgy NuGet feeds can block process. Feeds can return 200 OK and HTML when the package is not found and DNU falls over when it tries to parse it as XML.

    You can pass --ignore-failed-sources to dnu ignore these errors.

    This worked for me!

    dnu restore --ignore-failed-sources

    ReplyDelete
  2. AWS Training in Bangalore - Live Online & Classroom
    myTectra Amazon Web Services (AWS) certification training helps you to gain real time hands on experience on AWS. myTectra offers AWS training in Bangalore using classroom and AWS Online Training globally. AWS Training at myTectra delivered by the experienced professional who has atleast 4 years of relavent AWS experince and overall 8-15 years of IT experience. myTectra Offers AWS Training since 2013 and retained the positions of Top AWS Training Company in Bangalore and India.


    IOT Training in Bangalore - Live Online & Classroom
    IOT Training course observes iot as the platform for networking of different devices on the internet and their inter related communication. Reading data through the sensors and processing it with applications sitting in the cloud and thereafter passing the processed data to generate different kind of output is the motive of the complete curricula. Students are made to understand the type of input devices and communications among the devices in a wireless media.

    ReplyDelete