【问题标题】:Why I can't consolidate projects sdk versions in Visual Studio?为什么我无法在 Visual Studio 中整合项目 sdk 版本?
【发布时间】:2017-05-16 17:25:08
【问题描述】:

首先,我收到此构建错误,但仅在某些机器上:

错误 CS1705 Assembly '***' with identity '***,版本=1.0.0.0,文化=中性, PublicKeyToken=null' 使用 'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 版本比具有标识的引用程序集“System.Net.Http” 'System.Net.Http,版本=4.1.1.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' *** C:\***\CSC 1 活动

我猜,它在某种程度上与 SDK 版本有关。从我在“属性”窗口中看到的内容来看,在某些项目上我有Microsoft.NETCore.App 1.1.1,而其他项目有Microsoft.NETCore.App 1.1.2

包更新后,构建成功(但为什么我必须更新所有包?)。

但是,sdk 版本仍然不同。现在我正在尝试使用 Visual Studio 的这种整合功能:

在工具提示中说:

以下版本不可用,因为在 项目或packages.config

如何将所有项目升级到较新的 SDK?以及如何确保将来不会破坏其他机器上的构建?

【问题讨论】:

  • 如果完全关闭 VS,在命令行上执行 dotnet restore 并再次打开解决方案会怎样?此包被隐式引用,并且 NuGet UI 明确不应该为此包执行任何更新。
  • restore 成功。再次打开解决方案后,我在错误列表中看到一个警告:Detected package downgrade: Microsoft.NETCore.App from 1.1.2 to 1.1.1 ...。整合仍然不起作用
  • 这取决于您使用的 Visual Studio 版本,但如果您使用的是 Visual Studio 2015,请分享您的 project.json 文件。如果您使用的是 Visual Studio 2017,请分享您的 *.csproj 文件。 -- 我们正在寻找您所针对的确切框架,并确保您的所有项目都指向相同(或兼容)的框架。
  • @MichaelFreidgeim 之前有人问过

标签: c# .net .net-core visual-studio-2017


【解决方案1】:

如果您之前手动升级,在某些项目上使用Microsoft.NETCore.App 包,它们将包含类似<PackageReference Update="Microsoft.NETCore.App" Version="1.1.1" /> 的元素。

原因是Microsoft.NET.Sdk SDK 创建了一个隐式的包引用。

由于包是隐式引用的,NuGet 一开始就不应该这样做,并且当前的 VS 更新不再允许更新隐式引用的包。

你可以在这里做两件事:

  1. 删除所有更改/设置Microsoft.NET.Sdk 版本的PackageReference 元素。这将让 SDK 版本(包含在 MSBuild / dotnet cli 中)选择版本。
  2. 1 + 在您的 csproj 文件的 <PropertyGroup> 中,设置

     <RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
    

    这将设置 SDK 的隐式引用将使用的版本。

  3. 1 + 在您的 csproj 文件的 &lt;PropertyGroup&gt; 中,设置

    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
    

    然后手动安装所需版本的Microsoft.NETCore.App

我建议使用选项 1,因为它不再要求您修改 csproj 文件(例如,添加新项目、重组解决方案等时)。

【讨论】:

    【解决方案2】:

    在 ASP.NET Core 2.0 项目中遇到了同样的问题 - 这对我有用:

    编辑您的 'myproject.csproj' 文件并添加/更新以下内容:

      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> // add this line.
      </PropertyGroup>
    

    【讨论】:

      【解决方案3】:

      正如Martin所说,我从所有项目中删除了所有NETCore PackageReference,清理,打开Nuget Manager并在下载并安装最新的sdk后安装了我需要的版本

      https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 2016-04-12
        • 1970-01-01
        • 2010-11-04
        • 2023-03-21
        • 2017-06-27
        • 1970-01-01
        相关资源
        最近更新 更多