2014-05-20 2 views

Répondre

8

Enfin, j'ai trouvé la solution. Merci pour l'open source de ASP.NET vNext, j'ai trouvé le code source de la commande "restore".

Au cours du processus de restauration, la restauration commande essaie de trouver le dossier « racine » du projet par cette méthode:

public static string ResolveRootDirectory(string projectDir) 
{ 
    var di = new DirectoryInfo(projectDir); 

    while (di.Parent != null) 
    { 
     if (di.EnumerateFiles("*.global.json").Any() || 
      di.EnumerateFiles("*.sln").Any() || 
      di.EnumerateDirectories("packages").Any() || 
      di.EnumerateDirectories(".git").Any()) 
     { 
      return di.FullName; 
     } 

     di = di.Parent; 
    } 

    return Path.GetDirectoryName(projectDir); 
} 

car le dossier HelloMvc n'a pas ces fichiers ou dossier de paquets, ainsi le dossier parent de HelloMvc sera le dossier racine.

Le dossier racine est important car nous devons copier le fichier "NuGet.config" dans le dossier racine. Le NuGet.config indique la source du paquet de "AspNetVNext", donc les assemblages de asp.net vNext peuvent être trouvés. pour moi

<configuration> 
    <packageSources> 
     <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/" /> 
     <add key="NuGet.org" value="https://nuget.org/api/v2/" /> 
    </packageSources> 
    <packageSourceCredentials> 
     <AspNetVNext> 
      <add key="Username" value="aspnetreadonly" /> 
      <add key="ClearTextPassword" value="4d8a2d9c-7b80-4162-9978-47e918c9658c" /> 
     </AspNetVNext> 
    </packageSourceCredentials> 
</configuration> 

, je crée un dossier packages dans mon dossier HelloMvc et copié le NuGet.config dans le dossier HelloMvc. Ainsi, le dossier HelloMvc lui-même est le dossier racine et NuGet.config est en position, le kpm restore a réussi.

+0

Merci - J'ai aussi été bloqué pendant un certain temps avant de lire ceci!Trouvé quelque chose de similaire ici - https://github.com/aspnet/KRuntime/issues/192 – Sornakumar

+0

Sweet! Merci pour cette résolution. J'ai fini par mettre NuGet.config dans un dossier au-dessus de moi dans mon répertoire - c: \ mk \ dev \ vnext. et toutes les applications actuellement dans les sous-dossiers ci-dessous. – mikekidder

1

Il est possible que ces versions spécifiques des packages ne soient plus disponibles sur le serveur CI.

Ouvrez project.json avec un éditeur de texte et remplacez les versions spécifiques par les versions *. Par exemple:

"Microsoft.AspNet.Diagnostics": "0.1-alpha-build-0623", 
"Microsoft.AspNet.Hosting": "0.1-alpha-build-0519", 
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-build-0469" 

devient

"Microsoft.AspNet.Diagnostics": "0.1-alpha-*", 
"Microsoft.AspNet.Hosting": "0.1-alpha-*", 
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-*", 

* la version signifie "choisir la dernière version de ce paquet".

+0

Toutes ces versions existent sur MyGet, cela ne devrait donc pas poser de problème. – Eilon

+0

Exactement. Je les ai changés en '0.1-alpha- *' et j'ai eu la même erreur "impossible à localiser". – Ricky

0

La solution la plus simple serait; Ajouter/Créer le fichier NuGet.config dans le répertoire principal de l'application, le contenu du NuGet.config est;

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetmaster/api/v2" /> 
    <add key="NuGet.org" value="https://nuget.org/api/v2/" /> 
    </packageSources> 
</configuration> 

faire ensuite que votre dossier d'application est un niveau bas à partir du fichier nuget.config, la structure du dossier est;

[Main_Folder]
          Nuget.config
          [Application_Folder]

Ensuite, il faut travailler!

Questions connexes