GNU/Linux >> Tutoriales Linux >  >> Linux

La forma más sencilla de crear un proyecto dotnet SDK que requiere net461 en MacOS

(utilizando .NET Core SDK ) La forma más sencilla de compilar para un .NET Framework TFM cuando se ejecuta en macOS o Linux utilizando la CLI de .NET Core, es utilizar los paquetes Nuget de .NET Framework Targeting Pack de Microsoft (actualmente en vista previa ):

Estos paquetes permiten crear proyectos de .NET Framework en cualquier máquina que tenga instalado al menos MSBuild o .NET Core SDK.

Los siguientes escenarios y beneficios están habilitados para proyectos de .NET Framework:

  • Cree sin necesidad de operaciones administrativas para instalar requisitos previos como Visual Studio o paquetes de orientación de .NET Framework.
  • Cree bibliotecas en cualquier sistema operativo compatible con .NET Core SDK.
  • Cree proyectos basados ​​en Mono.

Puede incluir el metapaquete Microsoft.NETFramework.ReferenceAssemblies o usar solo el paquete específico, que en su caso es Microsoft.NETFramework.ReferenceAssemblies.net461.

Agrega el paquete al *.csproj o tu Directory.Build.props :

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

Nota:El PrivateAssets El atributo controla qué activos de dependencia se consumirán pero no fluirán al proyecto principal. Ver los documentos.

Actualizar

Esto ya no es necesario con el .NET 5 SDK (por ejemplo, 5.0.100 ), que ahora agregará automáticamente el PackageReference a los ReferenceAssemblies para .NET Framework .


Para compilar a través de bash en un Mac normal, los pasos mínimos parecen ser:

  • Instale Mono 6.0 (se recomienda 5.2 para la interoperabilidad VS Mac, no me importa eso, y la interoperabilidad de Mono 6.0 con el núcleo Dotnet es mejor)
  • Instala dotnet SDK 2.2 (no tiene que ser exactamente eso, pero funciona para mí)
  • Pon esto en un archivo Directory.build.props (abierto a mejoras si alguien tiene alguna)
<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>
  • Golpe:dotnet build SolutionFileName.sln ahora debería funcionar
  • Instalar Rider 2019.1 o posterior
  • Rider:debería funcionar (debería detectar automáticamente msbuild 16.0 en la sección de herramientas de compilación)

Linux
  1. Actualizar .Net SDK en Debian 11 - ¿Guía paso a paso?

  2. ¿Cuál es la forma más sencilla de SSH usando Python?

  3. NuGet para .NET Core en Linux

  4. Cree un paquete NuGet en Linux que se dirija a .NET Framework

  5. ¿Hay alguna forma de cambiar el nombre de un proyecto Cargo?

Cómo instalar Dotnet en AlmaLinux 8

3 formas de instalar .NET 6 (dotnet) core en Debian 11 Bullseye

Probar .NET Core en Linux con solo un tarball (sin apt-get)

Cómo instalar (.NET Core) Dotnet Core en distribuciones de Linux

No se pudo encontrar la revisión 23.0.1 de las herramientas de compilación

Cómo compilar la aplicación .NET Core para Linux en una máquina con Windows