【问题标题】:The dependency >= 1.0.0-rc1-update1 could not be resolved依赖项 >= 1.0.0-rc1-update1 无法解析
【发布时间】:2016-01-01 03:48:20
【问题描述】:

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

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

[更新] 当我从模板创建一个新的 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

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

[更新] 我想知道为什么它会使用 nuget.org/api/v2 所以我使用扩展管理器重新安装了 nuget。它显示版本 扩展管理器中的 3.3.0.167,但是包管理器的输出窗口仍然提到 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 只是我们内部开发的几个。我不认为它应该影响事情。

【问题讨论】:

  • 我也试过重启。
  • 这些 asp.net 程序集还没有发布到 Nuget,rc1-final 是最后一个可用版本。这应该是行不通的。
  • @kirsteng:您是否只是手动修改了所有依赖项的版本号?每个 dll 都可以在 NuGet 上单独开发和发布。一些 dll 仍然具有名称 -bata8,另一个具有 -rc1-final 并且只有一些从那里更新了 Update1 并且在版本号中有 -rc1-update1。您能否发布project.json(不是图片)或发布可以使用的测试项目的链接?顺便说一句,对于 ASP.NET 5 的不同状态,有 单独的 NuGet 存储库。我建议您阅读 the answer
  • 感谢@Oleg 我在上面发布了 project.json。将阅读您发送的链接。
  • @kirsteng:这不重要。您可以在 Visual Studio 2015+ 中使用 https://api.nuget.org/v3/index.json 以使用 NuGet V3 源,并在 Visual Studio 2012+ 中使用 https://www.nuget.org/api/v2/ 以使用 NuGet V2 源。您将访问 相同的 NuGet 包,这一点很重要,您可以在 https://www.nuget.org/packages/ 上找到这些包。我认为你混合了一些不同的东西。我会写答案来澄清这一点。

标签: visual-studio-2015 nuget dnvm


【解决方案1】:

您似乎将 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 的版本,应该在构建解决方案/项目期间使用。

上述所有步骤与当前发布的许多现有软件包的版本无关。您可以转到页面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 开发的不稳定)。在https://www.myget.org/gallery/ 下可以找到很多其他提要,但在我看来,如果您想使用最新的稳定版 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”,但仍然有很多程序集,其中有另一个版本为@ 987654347@。同样,来自http://myget.org/gallery/aspnetvnext 的不稳定构建今天名称为“v1.0.0-rc2-16357”,但是有很多程序集,它们有另一个版本为*-rc2-16357。 p>

换句话说,您不应该仅仅将所有依赖项的名称更改为使用版本"*-rc1-update1"。您可以在上下文菜单中打开“管理 NuGet 包...”,选中“包含预发布”并选择“更新”选项卡以查看您包含在 package.json 的“依赖项”中的新包是否已发布。只有找到新的包才可以更新,但是对所有包都使用-rc1-update1会报错。

【讨论】:

【解决方案2】:

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

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

这应该可以解决问题。

【讨论】:

  • 谢谢迈克尔,但不高兴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 2021-11-07
  • 2020-05-27
相关资源
最近更新 更多