无法解析依赖关系> = 1.0.0-rc1-update1

时间:2016-01-01 03:48:20

标签: visual-studio-2015 nuget dnvm

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

我跑了

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

和dnvm列表显示活动版本已设置为rc1-update1

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

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

然而VS现在指示"包恢复失败"。我有这样的错误信息。

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中已编辑的依赖项上显示

enter image description here

我一定是错过了一步。 如何升级项目以使用框架的Active版本?

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

“解决方案资源管理器”窗口中也有一条消息 "包恢复失败" 输出显示以下

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
从这里我看到它正在尝试运行x86版本的dnx。为什么会这样?

[更新] 我想知道它为什么会使用nuget.org/api/v2所以我使用扩展管理器重新安装了nuget。它显示版本 3.3.1.167在Extension Manager中,但Package Manager的输出窗口仍然是V2。

我正在运行Windows 7

[更新] 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只是我们在内部开发的一些。我认为它不会影响事情。

enter image description here

2 个答案:

答案 0 :(得分:6)

您似乎已将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 Project,则通常会创建包含

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

此类设置通知dnx的版本,应在构建解决方案/项目期间使用该版本。

以上所有步骤与当前发布的许多现有软件包的版本无关。您可以转到页面https://www.nuget.org/packages/并搜索包的名称。如果您在NuGet配置中使用https://www.nuget.org/api/v2/https://api.nuget.org/v3/index.json,则会找到相同的包。您可以检查http://myget.org/gallery/aspnetmaster以查看“主”构建(稳定版本)的当前版本的ASP.NET 5程序集,并且可以检查http://myget.org/gallery/aspnetvnext以查看最新版本(来自GitHub dev的不稳定版)。可以在https://www.myget.org/gallery/下找到很多其他Feed,但在我看来,如果您想使用ASP.NET 5的最新稳定版本,则只应使用https://api.nuget.org/v3/index.jsonhttps://www.myget.org/F/aspnetmaster/api/v3/index.json

你会看到http://myget.org/gallery/aspnetmaster的最新稳定版本名称“1.0.0-rc1-final”,但仍有很多程序集,它们有另一个版本为*-rc1-final。同样,来自http://myget.org/gallery/aspnetvnext的不稳定构建今天名称“v1.0.0-rc2-16357”,但是有很多程序集,其他版本为{{1} }。

换句话说,您不应只更改所有依赖项的名称以使用版本*-rc2-16357。您可以在上下文菜单中打开“管理NuGet包...”,选中“包含预发布”并选择“更新”选项卡,以查看是否发布了包含在"*-rc1-update1"“依赖关系”中的新包。只有当你找到一些新软件包然后你才能更新它,但是package.json对所有软件包的使用都会产生错误。

答案 1 :(得分:2)

有些工具会根据别名选择框架。在命令行中,检查是否将别名“default”分配给1.0.0-rc1-update1 clr x64版本。如果没有运行以下命令。

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

这应解决问题。