繁体   English   中英

为什么我无法在 Visual Studio 中合并项目 sdk 版本?

[英]Why I can't consolidate projects sdk versions in Visual Studio?

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

错误 CS1705 程序集 '***' 身份为 '***, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 使用 'System.Net.Http, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ' 其版本高于引用的程序集 'System.Net.Http',标识为 'System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' *** C:\\***\\CSC 1 活跃

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

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

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

在此处输入图片说明

在工具提示中说:

由于项目或 packages.config 中的其他限制,以下版本不可用

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

如果您之前手动升级过某些项目上的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 文件的<PropertyGroup>中,设置

    <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>

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

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

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

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

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

正如马丁所说,我从所有项目中删除了所有NETCore PackageReference,清理,打开 Nuget Manager 并在从

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM