【问题标题】:How to control TargetFramework based on if netcore 2.x SDK is installed如何根据是否安装了 netcore 2.x SDK 来控制 TargetFramework
【发布时间】:2017-09-20 01:34:55
【问题描述】:

在“我想与人们分享示例”的上下文中,我宁愿不告诉人们“您需要安装 netcore 2.x SDK 才能使用此示例”。只有桌面 .net 的人应该仍然能够打开解决方案并运行解决方案。

但是如果一个项目有这个

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>

并且没有安装netcoreapp2.0 他们会得到以下错误

当前的 .NET SDK 不支持面向 .NET Core 2.0。以 .NET Core x 或更低版本为目标,或者使用支持 .NET Core 2.0 的 .NET SDK 版本。

【问题讨论】:

    标签: visual-studio msbuild .net-core


    【解决方案1】:

    有关此问题的一般问题,请参阅https://github.com/dotnet/cli/issues/7051。目前没有防弹解决方案。

    目前可行的方法是检查'$(UsingMicrosoftNETSdk)' == 'true'。此属性是在 2.0 SDK 中添加的。因此,如果它存在,则意味着您使用的是 2.0 SDK。如果不是,那么它必须是 1.x。

    您当前的hack的问题是,当版本 3 出现时,它会中断。

    【讨论】:

      【解决方案2】:

      我目前的hack就是这样做

      <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup Condition=" $(BundledNETCoreAppPackageVersion.StartsWith('2.')) ">
          <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
        </PropertyGroup>
        <PropertyGroup Condition=" ! $(BundledNETCoreAppPackageVersion.StartsWith('2.'))">
          <TargetFramework>net461</TargetFramework>
        </PropertyGroup>
      

      这似乎可行,但我希望有一个更少的黑客/更多支持的替代方案

      【讨论】:

      • 感谢您在这里分享您的解决方案,您可以将其标记为答案,直到您得到更好的答案,o 它可以帮助遇到相同问题的其他社区成员。
      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2021-04-29
      相关资源
      最近更新 更多