【问题标题】:The project was restored using Microsoft.NETCore.App version 2.1.0, but with current settings, version 2.1.0-rtm-26515-03 would be used instead该项目使用 Microsoft.NETCore.App 版本 2.1.0 恢复,但使用当前设置,将使用版本 2.1.0-rtm-26515-03
【发布时间】:2019-01-09 13:11:25
【问题描述】:

目前我有一个用 c# 制作的微服务,带有 web api 和 net core 2.0

在 nutget 包中,我已经找到了 2.1 版的 net core,我决定安装它,以更新我的应用程序。我改变了目标如下图

但是当我尝试编译它时会产生这个错误

使用 Microsoft.NETCore.App 版本 2.1.0 恢复项目,但使用当前设置,将使用版本 2.1.0-rtm-26515-03。要解决此问题,请确保将相同的设置用于还原和后续操作(例如构建或发布)。如果在构建或发布期间而不是在还原期间设置了 RuntimeIdentifier 属性,通常会出现此问题。

我的依赖关系仍然如此

【问题讨论】:

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


    【解决方案1】:

    使用 Microsoft.NETCore.App 版本 2.1.0 恢复项目,但在当前设置下,将使用版本 2.1.0-rtm-26515-03

    此时这是known issue。要解决此问题,您可以尝试以下解决方法:

    • .csproj文件中添加TargetLatestRuntimePatch属性:

      <PropertyGroup>
        <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
      </PropertyGroup>
      

    或者

    • .csproj 中设置RuntimeFrameworkVersionRuntimeIdentifier 文件:

       <PropertyGroup>
         <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
         <PlatformTarget>AnyCPU</PlatformTarget>
         <RuntimeIdentifier>win-x64</RuntimeIdentifier>
       </PropertyGroup>
      

    如果上述解决方法不适合您,请在investigation issue 上查看更多解决方法。

    更多信息请参见Self-contained deployment runtime roll forward

    【讨论】:

    • 对我来说,第一个选项有效。我将建议的 TargetLatestRunTimePatch 节点添加到错误窗格中报告的 csproj 文件中。之后发布工作。它抱怨的特定 csproj 文件甚至不是我要发布的项目,而是它引用的众多项目之一。
    • 我只需要&lt;RuntimeFrameworkVersion&gt; 标签。不需要&lt;RuntimeIdentifier&gt; 标签。第一个选项对我没有帮助。
    • 我尝试了各种版本的 .Net Core,但这些都不适合我。
    • 就我而言,它是自发开始的。我关闭了 VS2019 并重新打开。一切都清楚...
    • 不要忘记将第一个选项的标签添加到构建/发布/恢复中涉及的其他项目。检查错误消息以确认还原失败的项目。
    【解决方案2】:

    我想发布一个 ASP.NET Core 2.1 控制台应用程序,但遇到了有关冲突版本 2.1.0 和 2.1.6 的错误。

    由于我的解决方案中有很多项目(并且 VS 没有给我任何关于哪些项目有问题的提示,我创建了一个文件 Directory.Build.props 包含以下内容并将其放置在我的 .sln 文件所在的目录中是

    <Project>
      <PropertyGroup>
        <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
        <GenerateFullPaths>true</GenerateFullPaths>
        <LangVersion>latest</LangVersion>
      </PropertyGroup>
    </Project>
    

    这里重要的是&lt;TargetLatestRuntimePatch&gt; 条目。

    这样,所有项目都使用相同的设置,我不必手动同步这些设置。

    Directory.Build.props 文档在这里https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2017

    【讨论】:

      【解决方案3】:

      我已经解决了如下问题:

      首先,将以下代码添加到 .csproj 文件中

      <PropertyGroup>
         <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
         <PlatformTarget>AnyCPU</PlatformTarget>
         <RuntimeIdentifier>win-x64</RuntimeIdentifier>
      </PropertyGroup>
      

      接下来,检查 Microsoft.AspNetCore.App 版本是否为 2.1.1。如果没有,请安装此版本。

      最后,使用 2.1.1 版本恢复您的包。从包管理器控制台恢复运行以下代码

      Install-Package Microsoft.NETCore.App -Version 2.1.1
      

      【讨论】:

        【解决方案4】:

        正如@Leo Liu-MSFT 提到的,我必须在 .csproj 文件中设置RuntimeFrameworkVersionRuntimeIdentifier

         <PropertyGroup>
           <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
           <PlatformTarget>AnyCPU</PlatformTarget>
           <RuntimeIdentifier>win-x64</RuntimeIdentifier>
         </PropertyGroup>
        

        但是重要的是,我不得不为解决方案恢复包。

        【讨论】:

          【解决方案5】:

          在将 Visual Studio 升级到版本 16.4.0 后,我今天分别获得了 2.2.7 版和 “但当前设置为 2.2.8...等”。此外,Nuget PackageManager 之后会崩溃

          合成产生了多个合成错误... (这里有很多疯狂的东西)

          最终通过擦除(即删除所有文件)C:\Users\my.username\AppData\Local\Microsoft\VisualStudio\16.0_79dcc3fa\ComponentModelCache来解决它

          【讨论】:

            【解决方案6】:

            我单独构建了项目,发现了一个缺失的参考并且它似乎修复了它 - 不感谢低质量的错误消息。

            【讨论】:

              【解决方案7】:

              我的情况。 Visual Studio 在 AppData\Local\Temp 中创建了一个 *.tmp 文件。在我删除所有 *.tmp 文件后,发布工作。

              【讨论】:

                猜你喜欢
                • 2019-02-07
                • 2019-05-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-03
                相关资源
                最近更新 更多