In Azure DevOps you can have your own private NuGet feed and I’m using that extensively. But sometimes authentication there is a pain.
This time I run into authentication issue while executing
dotnet publish for a probject that used that private feed:
Unable to load the service index for source https://mycompany.pkgs.visualstudio.com/DefaultCollection/_packaging/MyFeed/nuget/v3/index.json. [D:\a\1\s\src\MyProject.csproj] error : Response status code does not indicate success: 401 (Unauthorized). [D:\a\1\s\src\MyProject.csproj]
The reason for that is that
dotnet publish does restore by itself, even though all the packages have been restored previously via
The solution for this is to do the obvious thing: don’t restore on publish vis
But that gave me more errors:
error NETSDK1047: Assets file 'D:\a\1\s\src\MyProject\obj\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v2.0/win-x64'. Ensure that restore has run and that you have included 'netcoreapp2.0' in the TargetFrameworks for your project. You may also need to include 'win-x64' in your project's RuntimeIdentifiers.
Solution for that was to add
<RuntimeIdentifier>win-x64</RuntimeIdentifier> in my csproj file.
The overall process goes like this:
dotnet restore MyProject.csproj --configfile D:\a\1\Nuget\tempNuGet_2089.config --verbosity Detailed
tempNuget file is configured by Azure DevOps and contains the credentials for the private feed.
dotnet build MyProject.csproj dotnet publish MyProject.csproj --configuration Release --output D:\a\1\a\MyProject -r win-x64 --no-restore
And my csproj file looks like this:
<PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp2.0</TargetFramework> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <StartupObject>MyProject.Program</StartupObject> </PropertyGroup>