Yes , but it is not as obvious as cross-compiling .netstandardwith .net45or .net40, because these are not easy nicknames for your portable libraries, predefined.
sdk Microsoft.NET.TargetFrameworkInference.targets :
, , , :
<PropertyGroup>
<TargetFrameworks>portable-net451+win81;xyz1.0</TargetFrameworks>
<PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'portable-net451+win81'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'xyz1.0'">
<TargetFrameworkIdentifier>Xyz</TargetFrameworkVersion>
<PropertyGroup>
TargetFrameworkProfile. csproj/fsproj. . Nuget Target Frameworks.
TargetFrameworkIdentifier , .NETPortable
TargetFrameworkProfile , csproj/fsprog. C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\ v4.0, v4.5 v4.6 . :
v4.0
Profile1/ Profile143/ Profile2/ Profile3/ Profile4/ Profile6/
Profile102/ Profile147/ Profile225/ Profile328/ Profile41/ Profile88/
Profile104/ Profile154/ Profile23/ Profile336/ Profile42/ Profile92/
Profile131/ Profile158/ Profile24/ Profile344/ Profile46/ Profile95/
Profile136/ Profile18/ Profile240/ Profile36/ Profile47/ Profile96/
Profile14/ Profile19/ Profile255/ Profile37/ Profile5/
v4.5
Profile111/ Profile259/ Profile49/ Profile7/ Profile75/ Profile78/
v4.6
Profile151/ Profile157/ Profile31/ Profile32/ Profile44/ Profile84/
? , nuget, Nuget Target Frameworks . , - nuget, , TargetFrameworkVersion portable. , Profile47, v4.0, portable40-net45+sl5+win8
, DefineConstants. , , PROFILEXXX , .
<DefineConstants>$(DefineConstants);PROFILE47</DefineConstants>
, , , .
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8'">
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
CSharp
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;portable40-net45+sl5+win8</TargetFrameworks>
<Description>YOUR DESCRIPTION</Description>
<Company>YOUR COMPANY</Company>
<Authors> YOUR AUTHORS </Authors>
<Copyright>YOUR COPYRIGHT</Copyright>
<AssemblyVersion>YOUR VERSION</AssemblyVersion>
<FileVersion>YOUR VERSION</FileVersion>
<PackageProjectUrl>YOUR PROJECT URL</PackageProjectUrl>
<PackageLicenseUrl>YOUR LICENSE</PackageLicenseUrl>
<PackageTags>YOUR TAGS</PackageTags>
<IncludeSymbols>True</IncludeSymbols>
<IncludeSource>True</IncludeSource>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<Version>YOUR NUGET VERSION</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile47</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PROFILE47</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8'">
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
</Project>
F #
* : F # - Mono Mac Visual Studio 2017 15.3 fsproj. , examples PackageReference FSharp.Compiler.Tools FSharp.Core 4.1 FSharp ( .)
<Project Sdk="FSharp.NET.Sdk;Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;portable40-net45+sl5+win8</TargetFrameworks>
<Description>YOUR DESCRIPTION</Description>
<Company>YOUR COMPANY</Company>
<Authors> YOUR AUTHORS </Authors>
<Copyright>YOUR COPYRIGHT</Copyright>
<AssemblyVersion>YOUR VERSION</AssemblyVersion>
<FileVersion>YOUR VERSION</FileVersion>
<PackageProjectUrl>YOUR PROJECT URL</PackageProjectUrl>
<PackageLicenseUrl>YOUR LICENSE</PackageLicenseUrl>
<PackageTags>YOUR TAGS</PackageTags>
<IncludeSymbols>True</IncludeSymbols>
<IncludeSource>True</IncludeSource>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<Version>YOUR NUGET VERSION</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile47</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PROFILE47</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8'">
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FSharp.Core" Version="4.1.*" />
<PackageReference Include="FSharp.Compiler.Tools" Version="4.1.*" PrivateAssets="All"
/>
<PackageReference Include="FSharp.NET.Sdk" Version="1.0.*" PrivateAssets="All"
/>
</ItemGroup>
<ItemGroup>
<Compile Include="YourModule1.fs" />
<Compile Include="YourModule2.fs" />
</ItemGroup>
</Project>