web-dev-qa-db-fra.com

Comment enregistrer une nouvelle source de package NuGet avec dotnet CLI sur Ubuntu 14.04?

J'exécute .NET Core 1.1.0 sur Ubuntu 14.04, dans le but d'héberger mes API Web dans Docker sur Ubuntu. Je veux construire mes packages sur Ubuntu, mais certaines des références NuGet sont hébergées sur un référentiel NuGet interne (Artifactory). Cela fonctionne très bien dans VS2015 sous Windows après avoir ajouté la source du package, mais lorsque je lance:

dotnet restore

sur Ubuntu, les packages hébergés sur le dépôt public NuGet se téléchargent correctement, mais ceux sur Artifactory échouent:

error: Unable to resolve 'Mercury.BaseModel (>= 1.1.0)' for '.NETCoreApp,Version=v1.1'.

J'ai trouvé un fichier de configuration NuGet à \home\<user>\.nuget\NuGet\NuGet.Config et a ajouté le référentiel Artifactory comme suit:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Artifactory-DEV" value="https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local" protocolVersion="3"/>
  </packageSources>
</configuration>

mais je reçois toujours la même erreur.

NuGet lui-même ne fonctionne pas après l'installation du SDK .NET Core, j'utilise dotnet restore comme mentionné - y a-t-il une configuration similaire que je dois modifier pour la CLI dotnet (qui doit utiliser NuGet?) ou y a-t-il autre chose que je dois faire?

Merci!

15
Peter

Après tout ça j'ai vite identifié 2 problèmes que j'avais ratés:

  1. J'avais utilisé Sudo -i à exécuter en tant que root pour tenter de résoudre le problème, car la configuration de NuGet que j'ai installée dans mon dossier\home n'a pas été récupérée.
  2. Revenant à ma propre connexion, j'ai ensuite reçu une erreur:

    error: Unable to load the service index for source https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local.
    error:   The content at 'https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local' is not a valid JSON object.
    error:   Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
    

Il s'avère que notre référentiel Artifactory NuGet renvoie du XML qui est compatible NuGet v2. J'ai changé le fichier de configuration pour définir le dépôt comme v2 et cela fonctionne maintenant. Donc, d'en haut, éditez le fichier à

\home\<user>\.nuget\NuGet\NuGet.Config

ajouter votre nouvelle URL de référentiel et obtenir le bon paramètre de version:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="Artifactory-DEV" value="https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local" protocolVersion="2"/>
  </packageSources>
</configuration>
10
Peter

La restauration Dotnet CLI peut prendre -s en tant qu'url du flux source, donc si vous avez Artifactory avec référentiel distant sur nuget.org.

dotnet restore -s https://artifactory.example.com/api/nuget/nuget.org

Référence :

9