如何根据是否安装了netcore 2.x SDK来控制TargetFramework

时间:2017-09-20 01:34:55

标签: visual-studio msbuild .net-core

在“我想与人分享样本”的背景下,我宁愿不告诉别人“你需要安装netcore 2.x SDK来使用这个样本”。只有桌面.net的人应该仍然可以打开解决方案并运行解决方案。

但是如果一个项目有这个

netcoreapp2.0

并且未安装||,他们将收到以下错误

  

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

2 个答案:

答案 0 :(得分:1)

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

现在可以使用的是检查'$(UsingMicrosoftNETSdk)' == 'true'。此属性已添加到2.0 SDK中。因此,如果它存在,那么这意味着您正在使用2.0 SDK。如果它不是,那么它必须是1.x。

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

答案 1 :(得分:0)

我目前黑客就是这样做

<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>

这似乎有效,但我希望有更少的黑客/更多支持的替代