linux - 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

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

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

最佳答案

(使用 .NET Core SDK)构建 .NET Framework 的最简单方法 TFM使用 .NET Core CLIma​​cOSLinux 上运行时, 是利用 .NET Framework Targeting Pack Nuget Packages来自 Microsoft(目前处于预览阶段):

These packages enable building .NET Framework projects on any machine with at least MSBuild or the .NET Core SDK installed.

The following scenarios and benefits are enabled for .NET Framework projects:

  • Build without requiring admin operations to install pre-requisites such as Visual Studio or .NET Framework targeting packs.
  • Build libraries on any operating system supported by the .NET Core SDK.
  • Build Mono-based projects.

您可以包括 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 属性控制哪些依赖 Assets 将被消耗但不会流向父项目。参见 the docs .

更新

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

关于linux - 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57382030/

相关文章:

linux - DMA 引擎和 DMA Controller 有什么区别?

c++ - 如何以实时方式接受键盘输入?

linux - OS X 上的 Swift 为 Linux 编译?

macos - CocoaDialog 文本框显示第一行

macos - 如何在 OSX 上的终端中关闭 ls 输出的颜色

.net-core - .NET Core 是否可以与 NUnit 控制台运行程序一起使用?

c# - UseExceptionHandler 不会捕获任务异常?

linux - 如何将 qnx 分区挂载为仅用于执行特定代码行的读写?

.net-core - 如何将公钥导入RSA以在.net core中加密

python - 套接字错误 : [Errno 102] Operation not supported on socket