2014-05-20 15 views

답변

8

마지막으로 나는 해결책을 찾아 냈습니다. ASP.NET vNext의 오픈 소스에 감사드립니다. "restore"명령의 소스 코드를 발견했습니다. 복원 과정에서

는 복원 명령이이 방법으로 프로젝트의 "루트"폴더를 찾습니다 :

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); 
} 

HelloMvc 폴더에 해당 파일 또는 패키지 폴더가 없기 때문에, 그래서 HelloMvc의 상위 폴더가 루트 폴더가됩니다.

"NuGet.config"파일을 루트 폴더에 복사해야하므로 루트 폴더가 중요합니다. NuGet.config는 "AspNetVNext"패키지 원본을 나타내므로 asp.net vNext 어셈블리를 찾을 수 있습니다.

<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> 

는 자신을 위해, 내 HelloMvc 폴더에 패키지 폴더를 생성하고 HelloMvc 폴더에 NuGet.config을 복사. 따라서 HelloMvc 폴더 자체가 루트 폴더이고 NuGet.config가 제 위치에있는 경우 kpm restore이 성공했습니다.

+0

감사합니다 - 나는 또한 언젠가 이것을 읽기 전에 막혔다!비슷한 것을 발견했습니다 - https://github.com/aspnet/KRuntime/issues/192 – Sornakumar

+0

Sweet! 그 결단을 가져 주셔서 감사합니다. NuGet.config를 내 디렉토리 (c : \ mk \ dev \ vnext)의 한 폴더에 두었습니다. 현재 하위 폴더 아래에있는 모든 앱 – mikekidder

1

이러한 특정 버전의 패키지는 더 이상 CI 서버에서 사용할 수 없습니다.

project.json을 텍스트 편집기로 열고 특정 버전을 * 버전으로 바꿉니다. 예를 들어 는 :

"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" 

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

* 버전은 "해당 패키지의 최신 버전을 선택"의미가된다.

+0

모든 버전이 MyGet에 있으므로 문제가되지 않습니다. – Eilon

+0

정확히. 나는 그것들을'0.1-alpha- *'로 바꾸었고 같은 "찾을 수 없다"라는 오류가 발생했습니다. – Ricky

0

가장 쉬운 해결책은 다음과 같습니다. 기본 응용 프로그램 디렉토리 내에 NuGet.config 파일을 추가/작성하면 NuGet.config의 내용은 다음과 같습니다.

<?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> 

그런 다음 응용 프로그램 폴더가 nuget.config 파일의 한 수준 아래에 있는지 확인하십시오. 폴더 구조는 다음과 같습니다.

[Main_Folder]
          Nuget.config
         는 [Application_Folder]

그런 다음 작동한다!