GNU/Linux >> Tutoriels Linux >  >> Linux

Le moyen le plus simple de créer un projet SDK dotnet nécessitant net461 sur MacOS

(en utilisant .NET Core SDK ) La manière la plus simple de construire pour un .NET Framework TFM lors de l'exécution sur macOS ou Linux à l'aide de l'interface de ligne de commande .NET Core, consiste à utiliser les packages Nuget du pack de ciblage .NET Framework de Microsoft (actuellement en préversion ):

Ces packages permettent de créer des projets .NET Framework sur n'importe quelle machine avec au moins MSBuild ou le SDK .NET Core installé.

Les scénarios et avantages suivants sont activés pour les projets .NET Framework :

  • Créer sans nécessiter d'opérations d'administration pour installer des prérequis tels que les packs de ciblage Visual Studio ou .NET Framework
  • Créez des bibliothèques sur n'importe quel système d'exploitation pris en charge par le SDK .NET Core.
  • Créer des projets basés sur Mono.

Vous pouvez soit inclure le métapackage Microsoft.NETFramework.ReferenceAssemblies, soit utiliser uniquement le package spécifique, qui est dans votre cas Microsoft.NETFramework.ReferenceAssemblies.net461.

Ajouter le package au *.csproj ou votre Directory.Build.props :

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

Remarque :Le PrivateAssets L'attribut contrôle les actifs de dépendance qui seront consommés mais qui ne seront pas transmis au projet parent. Voir la documentation.

Mettre à jour

Ceci n'est plus nécessaire avec le SDK .NET 5 (par exemple 5.0.100 ), qui ajoutera désormais automatiquement le PackageReference aux assemblages de référence pour .NET Framework .


Pour compiler via bash sur un Mac vanille, les étapes minimales semblent être :

  • Installez Mono 6.0 (5.2 est recommandé pour l'interopérabilité VS Mac, je m'en fous, et l'interopérabilité de Mono 6.0 avec le noyau Dotnet est meilleure)
  • Installer dotnet SDK 2.2 (ce n'est pas forcément exactement cela, mais ça marche pour moi)
  • Mettez ceci dans un fichier Directory.build.props (ouvert aux améliorations si quelqu'un en a)
<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 devrait maintenant fonctionner
  • Installer Rider 2019.1 ou version ultérieure
  • Rider :devrait fonctionner correctement (il devrait détecter automatiquement msbuild 16.0 dans la section des outils de génération)

Linux
  1. Quel est le moyen le plus simple de SSH en utilisant Python ?

  2. NuGet pour .NET Core sous Linux

  3. Créer un package NuGet sur Linux qui cible .NET Framework

  4. Existe-t-il un moyen de renommer un projet Cargo ?

  5. Comment installer le SDK dotnet sur Ubuntu 16.04 LTS

Comment installer Dotnet dans AlmaLinux 8

3 façons d'installer le noyau .NET 6 (dotnet) sur Debian 11 Bullseye

Essayer .NET Core sur Linux avec juste une archive tar (sans apt-get)

Comment installer (.NET Core) Dotnet Core sur les distributions Linux

Impossible de trouver la révision 23.0.1 des outils de compilation

Comment compiler l'application .NET Core pour Linux sur une machine Windows