我有.sln
一个build.proj
带有<TargetFrameworks>netcoreapp2.1;net461</TargetFrameworks>
. 它使用 Visual Studio 和 构建在 Windows 上dotnet build
,但我也希望它能够构建尽可能多的其他地方。我需要在我的 README.md 中放入什么和/或在项目文件中放入什么以使其在 Rider 和/或 Mac 上的 bash 上构建?
2 回答
(使用.NET Core SDK )使用.NET Core CLI在macOS或Linux上运行时构建.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中。
为了在香草 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)