我将 HelloMvc 项目文件夹复制到另一个文件夹“Ricky”并运行 kpm restore,得到以下输出:
我不知道出了什么问题。“kpm restore”在从 asp.net/home 存储库克隆的原始文件夹中成功运行。
我将 HelloMvc 项目文件夹复制到另一个文件夹“Ricky”并运行 kpm restore,得到以下输出:
我不知道出了什么问题。“kpm restore”在从 asp.net/home 存储库克隆的原始文件夹中成功运行。
最后我想出了解决方案。感谢 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 文件夹中创建了一个包文件夹,并将 NuGet.config 复制到 HelloMvc 文件夹。所以HelloMvc文件夹本身就是根文件夹,NuGet.config就位,kpm restore
成功了。
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-*",
*
version 表示“选择该软件包的最新版本”。
最简单的解决方案是;在主应用程序目录中添加/创建 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]
然后它应该工作!