无法解析 >= 1.0.0-rc1-update1 的依赖项

The dependency >= 1.0.0-rc1-update1 could not be resolved

我想将我的 C# Web 应用程序更新到下一个 asp.net 版本。

我运行

dnvm use  1.0.0-rc1-update1 -r clr arch x64 -p

并且dnvm list显示active版本已经设置为rc1-update1

现在我想更新我的 VS2015 解决方案以使用 rc1-update1

我编辑了 project.json 以将版本从 rc1-final 更新到 rc1-update1

然而 VS 现在指示 "package restore failed"。我有这样的错误消息。

Severity    Code    Description Project File    Line    Suppression State
Error   CS0234  The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)    MyBootStrap.DNX 4.5.1    

将鼠标悬停在 project.json 中编辑的依赖项上显示

我一定是漏了一步。 如何升级我的项目以使用框架的活动版本?

[更新] 当我从模板创建新的 Web 应用程序时,我注意到它仍在使用 rc1-final。

解决方案资源管理器中也有一条消息 window "Package restore failed" 输出显示如下

PATH=.\node_modules\.bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;
%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git
C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnx.exe "C:\Users\kirsten\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\lib\Microsoft.Dnx.Tooling\Microsoft.Dnx.Tooling.dll" 
restore "E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU"
Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
  CACHE https://www.nuget.org/api/v2/
Restoring packages for E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.json
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Diagnostics'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.IISPlatformHandler'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Mvc.TagHelpers'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Server.Kestrel'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.StaticFiles'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.AspNet.Tooling.Razor'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.FileProviderExtensions'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Configuration.Json'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Console'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.Extensions.Logging.Debug'
  CACHE https://www.nuget.org/api/v2/FindPackagesById()?id='Microsoft.VisualStudio.Web.BrowserLink.Loader'
Unable to locate Dependency Microsoft.AspNet.Diagnostics >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.IISPlatformHandler >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Mvc >= 6.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Mvc.TagHelpers >= 6.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Server.Kestrel >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.StaticFiles >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.AspNet.Tooling.Razor >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Configuration.FileProviderExtensions >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Configuration.Json >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging.Console >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.Extensions.Logging.Debug >= 1.0.0-rc1-update1
Unable to locate Dependency Microsoft.VisualStudio.Web.BrowserLink.Loader >= 14.0.0-rc1-update1
Writing lock file E:\EShared\Dev2016\MyBootStrap\src\MyBootStrap\project.lock.json
Restore complete, 413ms elapsed

从这里我看到它正在尝试 运行 dnx 的 x86 版本。为什么会这样?

[更新] 我想知道为什么它会使用 nuget。org/api/v2 所以我使用扩展管理器重新安装了 nuget。它显示版本 扩展管理器中的 3.3.0.167,但包管理器的输出 window 仍然提到 V2.

我是运行宁Windows7

[更新] project.json 是

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-update1",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-update1",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-update1",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-update1",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-update1",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-update1",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Configuration.FileProviderExtensions" : "1.0.0-rc1-update1",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-update1",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-update1",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-update1"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ],
  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

这是我的 NuGet.Config 文件

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageRestore>
    <add key="enabled" value="True" />
    <add key="automatic" value="True" />
  </packageRestore>
  <packageSources>
    <add key="SBD" value="E:\EShared\NuGet" />
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
  <activePackageSource>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </activePackageSource>
</configuration>

这是我的包来源

SBD 只是我们内部开发的几个。我不认为它应该影响事情。

有些工具是根据别名来选择框架的。在命令行中,检查是否已将别名 "default" 分配给 1.0.0-rc1-update1 clr x64 版本。如果不是运行下面的命令。

dnvm alias default 1.0.0-rc1-update1 -a x64 -r clr

这应该可以解决问题。

您似乎将 dnx(Microsoft .NET 执行环境)的版本、dnvm(.NET 版本管理器)的版本与程序集的版本号混在一起了。

ASP.NET 具有模块化结构。这有优点也有缺点。首先,您可以使用以下命令检查当前的 dnvm(.NET 版本管理器):

dnvm version

您可以使用

dnvm update-self

更新到最新版本。

你可以用同样的方式使用

dnvm list

查看配置文件中安装的所有 dnx(Microsoft .NET 执行环境)。 %USERPROFILE%\.dnx\runtimes。每个已安装的 dnx 版本都会有一个文件夹。通过使用 dnvm use 1.0.0-rc1-update1 -r clr arch x64 -p 您可以更改 PATH。可以看到默认使用的当前版本dnx

dnx --version

它使用 %USERPROFILE%\.dnx\runtimes 子目录中的 dnx.exe,您通过 dnvm use ....

将其包含在 PATH 中

如果您使用 Visual Studio 项目,那么您创建的通常是 global.json 其中包含

{
  "projects": [
    "src"
  ],
  "sdk": {
    "version": "1.0.0-rc1-update1"
  }
}

这样的设置会通知 dnx 的版本,在构建 solution/project 时应该使用它。

以上所有步骤与当前发布的许多现有软件包的版本无关。如果您想使用 ASP.NET 5.

的最新稳定版本,您可以转到页面 https://www.nuget.org/packages/ and to search for the names of packages. The same packages will be found if you use https://www.nuget.org/api/v2/ or https://api.nuget.org/v3/index.json in NuGet configuration. You can examine http://myget.org/gallery/aspnetmaster to see the current version of ASP.NET 5 assemblies of the "master" builds (stable build) and you can examine http://myget.org/gallery/aspnetvnext to see the latest (unstable from GitHub dev). One can find a lot of other feeds under https://www.myget.org/gallery/, but in my opinion only https://api.nuget.org/v3/index.json and https://www.myget.org/F/aspnetmaster/api/v3/index.json should be used

你会看到来自http://myget.org/gallery/aspnetmaster have the name "1.0.0-rc1-final", but there are still a lot of assemblies, which have another version as *-rc1-final. In the same way unstable build from http://myget.org/gallery/aspnetvnext的最新稳定版有今天这个名字"v1.0.0-rc2-16357",但是有很多程序集,其中有另一个版本为 *-rc2-16357.

换句话说,您不应该仅仅更改所有依赖项的名称以使用版本 "*-rc1-update1"。您可以在上下文菜单中打开 "Manage NuGet Packages...",选中 "Include prerelease" 并选择 "Updates" 选项卡以查看您包含在 package.json 的 "dependencies" 中的新包是否是释放。只有当你找到一些新的包时你才可以更新它,但是对所有包使用-rc1-update1会产生错误。