【问题标题】:Simplest way to build dotnet SDK project requiring net461 on MacOS在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法
【发布时间】:2019-08-06 18:29:52
【问题描述】:

我有一个带有<TargetFrameworks>netcoreapp2.1;net461</TargetFrameworks> 的dotnet SDK .sln(和一个build.proj)。它使用 Visual Studio 和dotnet build 在 Windows 上构建,但我也希望它能够构建尽可能多的其他地方。我需要在我的 README.md 中添加什么和/或我可以在项目文件中添加什么以使其在 Rider 和/或 Mac 上的 bash 上构建?

【问题讨论】:

    标签: linux macos .net-core rider dotnet-sdk


    【解决方案1】:

    (使用 .NET Core SDK.NET Framework TFM 在任一 macOSLinux 使用 .NET Core CLI,是利用来自 Microsoft.NET Framework Targeting Pack Nuget Packages当前处于预览阶段):

    这些包允许在至少安装了 MSBuild 或 .NET Core SDK 的任何机器上构建 .NET Framework 项目。

    为 .NET Framework 项目启用了以下场景和优势:

    • 无需管理员操作即可安装 Visual Studio 或 .NET Framework 目标包等先决条件。
    • 在 .NET Core SDK 支持的任何操作系统上构建库。
    • 构建基于 Mono 的项目。

    您可以包含Microsoft.NETFramework.ReferenceAssemblies 元数据包; 或者只使用特定的包,在你的情况下是Microsoft.NETFramework.ReferenceAssemblies.net461

    将包添加到*.csproj 或您的Directory.Build.props

    <Project>
      <ItemGroup>
        <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All" />
      </ItemGroup>
    </Project>
    

    注意:PrivateAssets 属性控制将使用哪些依赖项资产,但不会流向父项目。见the docs

    更新

    使用 .NET 5 SDK(例如 5.0.100)不再需要此操作,它现在会自动将 PackageReference 添加到 ReferenceAssemblies 用于 .NET 框架

    【讨论】:

    • 效果很好,谢谢!更重要的是,感谢您抽出宝贵时间对所有装饰物做出如此详细的回答——希望它能获得应有的支持!
    【解决方案2】:

    为了在普通 Mac 上通过 bash 构建,最少的步骤似乎是:

    • 安装 Mono 6.0(VS Mac 互操作推荐 5.2,我不在乎,Mono 6.0 与 Dotnet 内核互操作更好)
    • 安装 dotnet SDK 2.2(不必完全一样,但对我有用)
    • 把它放在 Directory.build.props 文件中(如果有人有的话,可以改进)
    <Project>
         <PropertyGroup>
           <IsOSX Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX)))'== 'true'">true</IsOSX>
         </PropertyGroup>
         <PropertyGroup Condition=" '$(IsOSX)' == 'true' ">
            <FrameworkPathOverride>/Library/Frameworks/Mono.framework/Versions/Current/Commands/../lib/mono/4.6.1-api</FrameworkPathOverride>
         </PropertyGroup>
    </Project>
    
    • Bash:dotnet build SolutionFileName.sln 现在应该可以工作了
    • 安装 Rider 2019.1 或更高版本
    • Rider:应该只是工作(它应该在构建工具部分自动检测 msbuild 16.0)

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2017-08-17
      相关资源
      最近更新 更多