Reputation: 1892
Now that everything is based off of nuget packages, how do you do offline development?
Running dotnet new
and then dotnet restore
sometimes uses cached packages, and sometimes fails because it can not contact the nuget server.
Upvotes: 18
Views: 8493
Reputation: 9367
I recently had this scenario:
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.
Upvotes: 1
Reputation: 21
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:
The projects have restored ok and building and debugging in Visual Studio Code is also working ok.
Upvotes: 2
Reputation: 391
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)
Upvotes: 13