2017-09-20 47 views
2

在“我想与人分享样本”的情况下,我宁愿不告诉人们“你需要安装netcore 2.x SDK才能使用它样品”。只有桌面.net的用户应该仍然可以打开解决方案并运行解决方案。如何在安装netcore 2.x SDK的基础上控制TargetFramework

但是,如果一个项目有这个

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

,并没有netcoreapp2.0安装,他们将收到以下错误

目前.NET SDK不支持针对.NET 2.0的核心。要么以.NET Core x或更低版本为目标,要么使用支持.NET Core 2.0的.NET SDK版本。

回答

1

为广大见https://github.com/dotnet/cli/issues/7051问解决这个问题。目前没有防弹解决方案。

一个现在可以工作的是检查'$(UsingMicrosoftNETSdk)' == 'true'。该属性已添加到2.0 SDK中。所以如果它存在,那就意味着你使用的是2.0 SDK。如果没有,那么它必须是1.x.

与您当前的黑客的问题是,当版本3有一天到来时,它会中断。

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> 

这似乎是工作,但我希望有一个不太黑客/支持更多的替代

+0

感谢您在这里分享您的解决方案,您可以将其标记为答案,直到您获得更好的答案,o它可以帮助其他社区成员获得相同的问题。 –