6

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

4

2 回答 2

9

(使用.NET Core SDK )使用.NET Core CLI在macOSLinux上运行时构建.NET Framework TFM的最简单方法是利用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属性控制将使用哪些依赖项资产,但不会流向父项目。请参阅文档

更新

这不再需要使用.NET 5 SDK(例如5.0.100),它现在会自动将.NET FrameworkPackageReference添加到ReferenceAssemblies中。

于 2019-08-06T21:21:48.720 回答
3

为了在香草 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)
于 2019-08-06T18:29:52.390 回答