运行kpm restore时无法找到Microsoft.AspNet.Server.WebListener

Ric*_*cky 5 asp.net-core

我将HelloMvc项目文件夹复制到另一个文件夹"Ricky"并运行kpm restore,我得到了以下输出: 在此输入图像描述

我不知道出了什么问题."kpm restore"在其原始文件夹中成功运行,该文件夹是从asp.net/home存储库中克隆的.

Ric*_*cky 9

最后我想出了解决方案.感谢ASP.NET vNext的开源,我找到了" restore "命令的源代码.

在还原过程中,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);
}
Run Code Online (Sandbox Code Playgroud)

因为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>
Run Code Online (Sandbox Code Playgroud)

对于我自己,我在HelloMvc文件夹中创建了一个packages文件夹,并将NuGet.config复制到HelloMvc文件夹中.所以HelloMvc文件夹本身就是根文件夹而NuGet.config就位,kpm restore成功了.