如果使用mac,是否可以开发跨平台包?

时间:2017-06-04 05:25:54

标签: c# .net nuget .net-core .net-framework-version

我正在开发一个应该以跨平台为目标的软件包, 在定位框架net40net45x时,我无法构建项目,因为我的mac上未安装net40 sdk。

是否有可能在Mac上开发跨平台库,或者我是否需要Windows才能这样做?

我的csproj文件

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <PackageId>ID</PackageId>
    <VersionSuffix>$(VersionSuffix)</VersionSuffix>
    <TargetFrameworks>net45;net451;netstandard1.3</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net45' OR '$(TargetFramework)' == 'net451' ">
    <Reference Include="System"/>
    <Reference Include="System.Data"/>
    <Reference Include="System.Xml"/>
    <Reference Include="System.Xml.Linq"/>
    <Reference Include="Microsoft.CSharp"/>
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0"/>
    <PackageReference Include="ReflectionBridge" Version="0.0.12"/>
  </ItemGroup>
</Project>

1 个答案:

答案 0 :(得分:0)

当您定位netstandard1.2或更低时,您的资料库已根据the documentationnet45net451上运行。这就是.NET标准的目的。无需添加net45net451

但是,如果确实需要netstandard1.3net46或更高版本支持)并且想要另外定位net40(任何.NET标准都不支持),那么无法在基于.NET Core的环境(您的Mac)上编译它。在这种情况下,Windows是唯一的选择,因为没有适用于Mac的.NET Framework SDK(net名字的含义)。