(unter Verwendung von .NET Core SDK ) Die einfachste Art, für ein .NET Framework zu bauen TFM, wenn es auf einem der beiden macOS ausgeführt wird oder Linux mit der .NET Core-CLI, besteht darin, die Nuget-Pakete des .NET Framework Targeting Pack von Microsoft zu verwenden (aktuell in Vorschau ):
Diese Pakete ermöglichen das Erstellen von .NET Framework-Projekten auf jedem Computer, auf dem mindestens MSBuild oder das .NET Core SDK installiert ist.
Die folgenden Szenarien und Vorteile sind für .NET Framework-Projekte aktiviert:
- Erstellen Sie, ohne dass Administratorvorgänge erforderlich sind, um Voraussetzungen wie Visual Studio oder .NET Framework-Targeting-Pakete zu installieren.
- Erstellen Sie Bibliotheken auf jedem Betriebssystem, das vom .NET Core SDK unterstützt wird.
- Mono-basierte Projekte erstellen.
Sie können entweder das Metapaket Microsoft.NETFramework.ReferenceAssemblies einschließen oder nur das spezifische Paket verwenden, das in Ihrem Fall Microsoft.NETFramework.ReferenceAssemblies.net461.
ist
Fügen Sie das Paket zu *.csproj
hinzu oder Ihre Directory.Build.props
:
<Project>
<ItemGroup>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All" />
</ItemGroup>
</Project>
Hinweis:Die PrivateAssets
-Attribut steuert, welche Abhängigkeitsressourcen verbraucht werden, aber nicht in das übergeordnete Projekt fließen. Siehe die Dokumentation.
Aktualisieren
Mit dem .NET 5 SDK ist dies nicht mehr erforderlich (zB 5.0.100 ), der nun automatisch die PackageReference
hinzufügt zu den ReferenceAssemblies für .NET Framework .
Um über Bash auf einem Vanilla-Mac zu bauen, scheinen die minimalen Schritte zu sein:
- Installieren Sie Mono 6.0 (5.2 wird für die VS Mac-Interop empfohlen, das ist mir egal, und die Interop von Mono 6.0 mit dem Dotnet-Core ist besser)
- Dotnet SDK 2.2 installieren (muss nicht genau das sein, funktioniert aber bei mir)
- Fügen Sie dies in eine Directory.build.props-Datei ein (offen für Verbesserungen, falls jemand welche hat)
<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
sollte jetzt funktionieren - Installieren Sie Rider 2019.1 oder höher
- Rider:sollte einfach funktionieren (es sollte msbuild 16.0 im Abschnitt mit den Build-Tools automatisch erkennen)