How do you set up for offline development with .net Core

I recently had this scenario:

  • I had a development machine with an internet connection
  • There was an issue only presenting in an environment without an internet connection

I took the $HOME\.nuget\packages directory from my development machine, sent it through the process to get binaries into the environment and extracted it to the same location in the secure environment.

I then executed this command:

dotnet restore --source C:\Users\<my-user>\.nuget\packages\

All packages restored. I was then able to build, develop and iterate as normal.


According to yishaigalatzer (who, according to his Github profile works for "Microsoft" in "Redmond"): "This is by design. Please don't add logic to work around it." (as part of this issue report discussion: https://github.com/NuGet/Home/issues/2623)

So ..

Here are some ways we can then work around it. All of these are intended to stop "dotnet" from trying to connect to the server, and to use the local package directory only:

(1) Add a NuGet.config file as part of your project (in the same directory with project.json) that removes the online repository from the sources. Use the following:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <clear />
    </packageSources>
</configuration>

(2) Use a custom NuGet configuration (eg. "MyCustomNuGet.config") that includes no sources:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

Then when you run "dotnet restore", explicitly specify to use your custom configuration file:

dotnet restore --configfile MyCustomNuGet.config

(3) When running "dotnet restore", explicitly specify the local package directory as the source:

dotnet restore -s $HOME/.nuget

(or wherever the .nuget directory may be)


To setup an offline Ubuntu environment for .Net Core development I've used the following steps: - I've booted a live USB with Ubuntu on a PC connected to Internet and I've installed all necessary packages (dotnet, VS Code, git, node etc.); - From Visual Studio Code I've installed C# extension (and also others if necessary); - I've compiled and ran ASP.Net Core CLI samples with success (this downloaded all NuGet packages nedded); - I've copied on a USB stick all packages caches from: - /var/cache/apt - /home/.../.vscode/extensions - /home/.../.nuget/packages

* instead of ... should be the username

On the offline computer:

  • I've installed all the packages from apt folder with dpkd -i *.deb
  • I've copied Visual Studio extension folders in /home/.../.vscode/extension
    • here I got an error in Visual Studio Code and I had to give permissions on extension folders with chmod -R 777 /home/.../.vscode/extensions
  • I've copied all *.nupkg files from nuget/packages in a new folder (ex. /home/.../mypackages)
    • to copy only the *.nupkg files from nuget/packages cache folder, which is a entire hierarchy of files and folders, I've searched in explorer (Nautilus) ".nupkg" in that cache folder and then copied all the resulted *.nupkg files;
  • Now I've used the dotnet restore command in different projects with the path of Nuget packages: dotnet restore -s $HOME/mypackages

The projects have restored ok and building and debugging in Visual Studio Code is also working ok.

  • working on restoring npm packages cache

Tags:

Asp.Net Core