2017-09-20 78 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它可以幫助其他社區成員獲得相同的問題。 –