GNU/Linux >> Linux Esercitazione >  >> Linux

Il modo più semplice per creare un progetto dotnet SDK che richiede net461 su MacOS

(utilizzando .NET Core SDK ) Il modo più semplice per creare un .NET Framework TFM quando è in esecuzione su macOS o Linux utilizzando l'interfaccia a riga di comando di .NET Core, consiste nell'utilizzare i pacchetti Nuget di .NET Framework Targeting Pack di Microsoft (attualmente in anteprima ):

Questi pacchetti consentono di creare progetti .NET Framework su qualsiasi computer con almeno MSBuild o .NET Core SDK installato.

I seguenti scenari e vantaggi sono abilitati per i progetti .NET Framework:

  • Crea senza richiedere operazioni di amministrazione per l'installazione di prerequisiti come i pacchetti di targeting di Visual Studio o .NET Framework.
  • Crea librerie su qualsiasi sistema operativo supportato da .NET Core SDK.
  • Crea progetti basati su Mono.

Puoi includere il metapacchetto Microsoft.NETFramework.ReferenceAssemblies oppure utilizzare solo il pacchetto specifico, che nel tuo caso è Microsoft.NETFramework.ReferenceAssemblies.net461.

Aggiungi il pacchetto al *.csproj o il tuo Directory.Build.props :

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

Nota:il PrivateAssets l'attributo controlla quali risorse di dipendenza verranno consumate ma non passeranno al progetto principale. Consulta i documenti.

Aggiorna

Questo non è più necessario utilizzando .NET 5 SDK (ad es. 5.0.100 ), che ora aggiungerà automaticamente PackageReference agli assembly di riferimento per .NET Framework .


Per compilare tramite bash su un Mac vanilla, i passaggi minimi sembrano essere:

  • Installa Mono 6.0 (5.2 è consigliato per l'interoperabilità VS Mac, non mi interessa, e l'interoperabilità di Mono 6.0 con Dotnet core è migliore)
  • Installa dotnet SDK 2.2 (non deve essere esattamente così, ma per me funziona)
  • Metti questo in un file Directory.build.props (aperto a miglioramenti se qualcuno ne ha)
<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 ora dovrebbe funzionare
  • Installa Rider 2019.1 o successivo
  • Rider:dovrebbe funzionare (dovrebbe rilevare automaticamente msbuild 16.0 nella sezione degli strumenti di compilazione)

Linux
  1. Aggiorna .Net SDK su Debian 11 - Guida passo passo?

  2. Qual è il modo più semplice per SSH usando Python?

  3. Come costruire e installare GLFW 3 e usarlo in un progetto Linux

  4. NuGet per .NET Core in Linux

  5. Compila il pacchetto NuGet in Linux destinato a .NET Framework

Come installare Dotnet in AlmaLinux 8

3 modi per installare .NET 6 (dotnet) core su Debian 11 Bullseye

Provare .NET Core su Linux con solo un tarball (senza apt-get)

Come installare (.NET Core) Dotnet Core nelle distribuzioni Linux

Impossibile trovare la versione 23.0.1 degli strumenti di creazione

Come compilare l'app .NET Core per Linux in un computer Windows