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

时间:2014-05-20 01:06:37

标签: asp.net-core

我将HelloMvc项目文件夹复制到另一个文件夹" Ricky"并运行kpm恢复,我得到以下输出: enter image description here

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

3 个答案:

答案 0 :(得分:9)

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

在还原过程中,restore命令尝试通过此方法找出项目的“root”文件夹:

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文件夹中创建了一个packages文件夹,并将NuGet.config复制到HelloMvc文件夹中。所以HelloMvc文件夹本身是根文件夹,NuGet.config就位,kpm restore成功。

答案 1 :(得分: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-*",

*版本意味着&#34;选择该软件包的最新版本&#34;。

答案 2 :(得分: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]

然后它应该工作!