복원 실행시 Microsoft.AspNet.Server.WebListener를 찾을 수 없습니다, 나는 다음과 같은 출력을 가지고 뭐가 문제 야. "kpm restore"는 asp.net/home 저장소에서 복제 된 원래 폴더에서 성공적으로 실행되었습니다.내가 다른 폴더 "리키"에 HelloMvc 프로젝트 폴더를 복사 KPM 복원 실행 KPM은
4
A
답변
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
이 성공했습니다.
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
가장 쉬운 해결책은 다음과 같습니다. 기본 응용 프로그램 디렉토리 내에 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]
그런 다음 작동한다!
감사합니다 - 나는 또한 언젠가 이것을 읽기 전에 막혔다!비슷한 것을 발견했습니다 - https://github.com/aspnet/KRuntime/issues/192 – Sornakumar
Sweet! 그 결단을 가져 주셔서 감사합니다. NuGet.config를 내 디렉토리 (c : \ mk \ dev \ vnext)의 한 폴더에 두었습니다. 현재 하위 폴더 아래에있는 모든 앱 – mikekidder