首页 > 解决方案 > 强制 VS 使用较低版本的程序集

问题描述

这是一个普遍的问题,但我将描述我的具体场景 - 我的项目是 VS19 中的 .NET Core 3.0 SignalR 控制台应用程序(与 VS17 相同)

将所有内容升级到 Core 3.0 后,构建现在失败:

Error CS1705 Assembly 'Microsoft.AspNetCore.SignalR.Client' with identity
'Microsoft.AspNetCore.SignalR.Client, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=adb9793829ddae60' uses 'Microsoft.AspNetCore.Http.Connections.Common, 
Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' which has a higher version 
than referenced assembly 'Microsoft.AspNetCore.Http.Connections.Common' with identity 
'Microsoft.AspNetCore.Http.Connections.Common, Version=1.1.0.0, Culture=neutral,
PublicKeyToken=adb9793829ddae60'

我的理解是,尽管 nuget 的最高版本Microsoft.AspNetCore.Http.Connections.Common是 1.0.0.0,但由于某种原因Microsoft.AspNetCore.SignalR.Client需要 3.0.0.0,但它不存在(还)。

如何告诉 VS 改用 Microsoft.AspNetCore.Http.Connections.Common 1.0.0.0 ?

我尝试在我的 csproj 中将特定版本添加到参考中:

<PackageReference Include="Microsoft.AspNetCore.Http.Connections.Common" Version="1.1.0">
  <SpecificVersion>False</SpecificVersion>
</PackageReference>

但什么都没有改变。我也试过<SpecificVersion>True</SpecificVersion>,同样的结果:(

有什么帮助吗?

标签: visual-studioasp.net-core.net-corevisual-studio-2017asp.net-core-2.0

解决方案


一些预发布库在主提要.NET Core中不可用。NuGet您需要将 nightly/dev 提要添加到您的NuGet包源中,并且希望它应该在那里可用。

饲料是:

ASP.NET 核心

https://dotnet.myget.org/gallery/aspnetcore-dev

.NET 核心

https://dotnet.myget.org/F/dotnet-core/api/v3/index.json

将源添加到 Visual Studio

  1. 在项目的“管理 NuGet 包”窗口中,单击右上角的 cog。
  2. 在新对话框中单击右上角的红色“x”
  3. 将上面的 URL 粘贴到“源”文本框中
  4. 为提要命名(例如 ASP.NET Core Dev)
  5. 点击更新
  6. 确保提要位于列表底部(所以这是最后一个用于包裹的提要)
  7. 点击确定

现在,您可以将 NuGet 窗口中的包源更改为您的新提要或“全部”,然后单击“包含预发布”以查看包的预发布版本。


推荐阅读