(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)