GNU/Linux >> Znalost Linux >  >> Linux

Nejjednodušší způsob, jak vytvořit dotnet SDK projekt vyžadující net461 na MacOS

(pomocí .NET Core SDK ) Nejjednodušší způsob sestavení pro .NET Framework TFM při spuštění na jednom z macOS nebo Linux pomocí rozhraní .NET Core CLI je použití balíčků Nuget Packages .NET Framework Targeting Pack od Microsoft (aktuálně v náhledu ):

Tyto balíčky umožňují vytváření projektů .NET Framework na jakémkoli počítači s nainstalovaným alespoň MSBuild nebo .NET Core SDK.

Pro projekty .NET Framework jsou povoleny následující scénáře a výhody:

  • Vytvářejte bez nutnosti operací správce k instalaci nezbytných požadavků, jako jsou sady Visual Studio nebo .NET Framework pro cílení.
  • Vytvářejte knihovny na libovolném operačním systému podporovaném sadou .NET Core SDK.
  • Vytvářejte projekty založené na mono.

Můžete buď zahrnout metabalík Microsoft.NETFramework.ReferenceAssemblies; nebo použít pouze konkrétní balíček, což je ve vašem případě Microsoft.NETFramework.ReferenceAssemblies.net461.

Přidejte balíček do *.csproj nebo vaše Directory.Build.props :

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

Poznámka:PrivateAssets atribut řídí, která aktiva závislostí budou spotřebována, ale nepřejdou do nadřazeného projektu. Podívejte se na dokumenty.

Aktualizovat

To již není vyžadováno pomocí .NET 5 SDK (např. 5.0.100 ), který nyní automaticky přidá PackageReference do ReferenceAssemblies pro .NET Framework .


Abyste mohli stavět přes bash na vanilkovém Macu, zdá se, že minimální kroky jsou:

  • Nainstalujte Mono 6.0 (5.2 je doporučeno pro VS Mac interop, to mě nezajímá a Interop Mono 6.0 s jádrem Dotnet je lepší)
  • Nainstalovat dotnet SDK 2.2 (nemusí to být přesně to, ale funguje to pro mě)
  • Vložte to do souboru Directory.build.props (otevřený pro vylepšení, pokud někdo nějaké má)
<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 by nyní mělo fungovat
  • Nainstalujte si Rider 2019.1 nebo novější
  • Rider:should Just Work (měl by automaticky detekovat msbuild 16.0 v sekci nástrojů pro sestavení)

Linux
  1. Sestavte balíček NuGet na Linuxu, který cílí na .NET Framework

  2. Existuje nějaký způsob, jak přejmenovat projekt Cargo?

  3. Jak nainstalovat dotnet SDK na Ubuntu 16.04 LTS

  1. Upgrade .Net SDK na Debian 11 – průvodce krok za krokem?

  2. Jaký je nejjednodušší způsob, jak SSH používat Python?

  3. Jak sestavit a nainstalovat GLFW 3 a používat jej v projektu Linux

  1. Nový způsob vytváření meziplatformních uživatelských rozhraní pro zařízení Linux ARM

  2. Jenkins Build:Nastavte projekt Freestyle v Jenkins

  3. NuGet pro .NET Core na Linuxu