Update to .NET 5 (#10346)

* Update to .NET 5

.NET 5 brings many performance (especially regex) improvements
https://devblogs.microsoft.com/dotnet/announcing-net-5-0/

Can look at bringing the packages upto date and using a single file executable in a future PR if the maintainers are interested

* Dotnet restore before building

* Restore on Windows only

* Out of ideas

* Update framework for windows specific apps

* Don't upgrade Microsoft.Extensions.Configuration

* drop mono from the dotnet linux build instructions

* Fix logic to get app runtime

* readme: add windows .net prereq link

* Update README.md

* azure-pipeline: bump minorversion to 17

Co-authored-by: garfield69 <garfieldsixtynine@gmail.com>
Co-authored-by: Diego Heras <ngosang@hotmail.es>
Co-authored-by: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com>
This commit is contained in:
airhawk777 2020-12-08 19:10:34 +11:00 committed by GitHub
parent 6e8a6167e9
commit 65ca4d7478
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 49 additions and 45 deletions

View File

@ -20,7 +20,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
#### Supported Systems #### Supported Systems
* Windows 7SP1 or greater * Windows 7SP1 or greater
* Linux [supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1-supported-os.md#linux) * Linux [supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/5.0/5.0-supported-os.md#linux)
* macOS 10.13 or greater * macOS 10.13 or greater
<details> <summary> <b> Supported Public Trackers </b> </summary> <details> <summary> <b> Supported Public Trackers </b> </summary>
@ -587,12 +587,13 @@ We recommend you install Jackett as a Windows service using the supplied install
To get started with using the installer for Jackett, follow the steps below: To get started with using the installer for Jackett, follow the steps below:
1. Download the latest version of the Windows installer, "Jackett.Installer.Windows.exe" from the [releases](https://github.com/Jackett/Jackett/releases/latest) page. 1. Check if you need any .NET prerequisites installed, see https://docs.microsoft.com/en-us/dotnet/core/install/windows?tabs=net50#dependencies
2. When prompted if you would like this app to make changes to your computer, select "yes". 2. Download the latest version of the Windows installer, "Jackett.Installer.Windows.exe" from the [releases](https://github.com/Jackett/Jackett/releases/latest) page.
3. If you would like to install Jackett as a Windows Service, make sure the "Install as Windows Service" checkbox is filled. 3. When prompted if you would like this app to make changes to your computer, select "yes".
4. Once the installation has finished, check the "Launch Jackett" box to get started. 4. If you would like to install Jackett as a Windows Service, make sure the "Install as Windows Service" checkbox is filled.
5. Navigate your web browser to http://127.0.0.1:9117 5. Once the installation has finished, check the "Launch Jackett" box to get started.
6. You're now ready to begin adding your trackers and using Jackett. 6. Navigate your web browser to http://127.0.0.1:9117
7. You're now ready to begin adding your trackers and using Jackett.
When installed as a service the tray icon acts as a way to open/start/stop Jackett. If you opted to not install it as a service then Jackett will run its web server from the tray tool. When installed as a service the tray icon acts as a way to open/start/stop Jackett. If you opted to not install it as a service then Jackett will run its web server from the tray tool.
@ -756,7 +757,7 @@ To use it, please just request a free API key on [OMDb](http://www.omdbapi.com/a
## Building from source ## Building from source
### Windows ### Windows
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows) * Install the .NET 5 [SDK](https://www.microsoft.com/net/download/windows)
* Clone Jackett * Clone Jackett
* Open PowerShell and from the `src` directory, run `dotnet restore` * Open PowerShell and from the `src` directory, run `dotnet restore`
* Open the Jackett solution in Visual Studio 2019 (version 16.4 or above) * Open the Jackett solution in Visual Studio 2019 (version 16.4 or above)
@ -776,21 +777,21 @@ git clone https://github.com/Jackett/Jackett.git
cd Jackett/src cd Jackett/src
# dotnet core version # dotnet core version
dotnet publish Jackett.Server -f netcoreapp3.1 --self-contained -r osx-x64 -c Debug # takes care of everything dotnet publish Jackett.Server -f net5.0 --self-contained -r osx-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp3.1/osx-x64/jackett # run jackett ./Jackett.Server/bin/Debug/net5.0/osx-x64/jackett # run jackett
``` ```
### Linux ### Linux
```bash ```bash
sudo apt install mono-complete nuget msbuild dotnet-sdk-3.1 # install build tools (Debian/ubuntu) sudo apt install nuget msbuild dotnet-sdk-5.0 # install build tools (Debian/ubuntu)
git clone https://github.com/Jackett/Jackett.git git clone https://github.com/Jackett/Jackett.git
cd Jackett/src cd Jackett/src
# dotnet core version # dotnet core version
dotnet publish Jackett.Server -f netcoreapp3.1 --self-contained -r linux-x64 -c Debug # takes care of everything dotnet publish Jackett.Server -f net5.0 --self-contained -r linux-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp3.1/linux-x64/jackett # run jackett ./Jackett.Server/bin/Debug/net5.0/linux-x64/jackett # run jackett
``` ```
## Screenshots ## Screenshots

View File

@ -2,12 +2,12 @@
name: $(majorVersion).$(minorVersion).$(patchVersion) name: $(majorVersion).$(minorVersion).$(patchVersion)
variables: variables:
majorVersion: 0 majorVersion: 0
minorVersion: 16 minorVersion: 17
patchVersion: $[counter(variables['minorVersion'], 1)] # this will reset when we bump minor patchVersion: $[counter(variables['minorVersion'], 1)] # this will reset when we bump minor
jackettVersion: $(majorVersion).$(minorVersion).$(patchVersion) jackettVersion: $(majorVersion).$(minorVersion).$(patchVersion)
buildConfiguration: Release buildConfiguration: Release
netCoreFramework: netcoreapp3.1 netCoreFramework: net5.0
netCoreSdkVersion: 3.1.x netCoreSdkVersion: 5.0.x
# system.debug: true # system.debug: true
trigger: trigger:
@ -110,7 +110,7 @@ stages:
projects: 'src/Jackett.Tray/Jackett.Tray.csproj' projects: 'src/Jackett.Tray/Jackett.Tray.csproj'
publishWebProjects: false publishWebProjects: false
zipAfterPublish: false zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)' arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework)-windows --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: DotNetCoreCLI@2 - task: DotNetCoreCLI@2
displayName: Build Jackett Service (Windows only) displayName: Build Jackett Service (Windows only)
@ -120,7 +120,7 @@ stages:
projects: 'src/Jackett.Service/Jackett.Service.csproj' projects: 'src/Jackett.Service/Jackett.Service.csproj'
publishWebProjects: false publishWebProjects: false
zipAfterPublish: false zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)' arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework)-windows --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: CopyFiles@2 - task: CopyFiles@2
displayName: Copy Jackett Server displayName: Copy Jackett Server

View File

@ -22,10 +22,10 @@
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="MimeMapping" Version="1.0.1.30" /> <PackageReference Include="MimeMapping" Version="1.0.1.30" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="NLog" Version="4.7.4" /> <PackageReference Include="NLog" Version="4.7.5" />
<PackageReference Include="SharpZipLib" Version="1.2.0" /> <PackageReference Include="SharpZipLib" Version="1.2.0" />
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="4.7.0" /> <PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.7.0" /> <PackageReference Include="System.ServiceProcess.ServiceController" Version="5.0.0" />
<PackageReference Include="YamlDotNet" Version="8.1.2" /> <PackageReference Include="YamlDotNet" Version="8.1.2" />
</ItemGroup> </ItemGroup>

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Runtime.InteropServices; using System.Reflection;
using System.Runtime.Versioning;
namespace Jackett.Common.Utils namespace Jackett.Common.Utils
{ {
@ -13,7 +14,7 @@ namespace Jackett.Common.Utils
try try
{ {
runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("core", StringComparison.OrdinalIgnoreCase) >= 0; runningOnDotNetCore = Assembly.GetEntryAssembly()?.GetCustomAttribute<TargetFrameworkAttribute>()?.FrameworkName.IndexOf("Core", StringComparison.OrdinalIgnoreCase) >= 0;
} }
catch catch
{ {

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net5.0</TargetFramework>
<IsPackable>false</IsPackable> <IsPackable>false</IsPackable>
<NoWarn /> <NoWarn />
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" /> <PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" /> <PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
<PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" /> <PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" />

View File

@ -1,19 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net461</TargetFrameworks> <TargetFrameworks>net5.0;net461</TargetFrameworks>
<ApplicationIcon>jackett.ico</ApplicationIcon> <ApplicationIcon>jackett.ico</ApplicationIcon>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<NoWarn></NoWarn> <NoWarn></NoWarn>
<ServerGarbageCollection>false</ServerGarbageCollection> <ServerGarbageCollection>false</ServerGarbageCollection>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netcoreapp3.1|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net5.0|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors /> <WarningsAsErrors />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netcoreapp3.1|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net5.0|AnyCPU'">
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors /> <WarningsAsErrors />
</PropertyGroup> </PropertyGroup>
@ -31,11 +31,12 @@
</Otherwise> </Otherwise>
</Choose> </Choose>
<!-- Conditionally obtain references for the .NET Core App 3.1 target --> <!-- Conditionally obtain references for the .NET 5.0 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' "> <ItemGroup Condition=" '$(TargetFramework)' == 'net5.0' ">
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" /> <PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.8" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.0" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="4.7.0" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="5.0.0" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<!-- Conditionally obtain references for the .NET461 target --> <!-- Conditionally obtain references for the .NET461 target -->
@ -47,6 +48,7 @@
<PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.8" />
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" /> <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" />
</ItemGroup> </ItemGroup>
@ -55,11 +57,10 @@
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" /> <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
<PackageReference Include="AutoMapper" Version="8.1.1" /> <PackageReference Include="AutoMapper" Version="8.1.1" />
<PackageReference Include="CommandLineParser" Version="2.8.0" /> <PackageReference Include="CommandLineParser" Version="2.8.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.8" /> <PackageReference Include="NLog" Version="4.7.5" />
<PackageReference Include="NLog" Version="4.7.4" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" /> <PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.7.0" /> <PackageReference Include="System.ServiceProcess.ServiceController" Version="5.0.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> <PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net5.0-windows</TargetFramework>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<AssemblyName>JackettService</AssemblyName> <AssemblyName>JackettService</AssemblyName>
<ApplicationIcon>jackett.ico</ApplicationIcon> <ApplicationIcon>jackett.ico</ApplicationIcon>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net461</TargetFrameworks> <TargetFrameworks>net5.0;net461</TargetFrameworks>
<NoWarn /> <NoWarn />
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors /> <WarningsAsErrors />
@ -25,14 +25,14 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="FluentAssertions" Version="5.10.3" /> <PackageReference Include="FluentAssertions" Version="5.10.3" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="3.1.8" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="5.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.1.2" /> <PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
<PackageReference Include="MSTest.TestFramework" Version="2.1.2" /> <PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
<PackageReference Include="NUnit" Version="3.12.0" /> <PackageReference Include="NUnit" Version="3.12.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.11.1" /> <PackageReference Include="NUnit.ConsoleRunner" Version="3.11.1" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" /> <PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" /> <PackageReference Include="System.Text.Encoding.CodePages" Version="5.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net5.0-windows</TargetFramework>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<AssemblyName>JackettTray</AssemblyName> <AssemblyName>JackettTray</AssemblyName>

View File

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net461;netcoreapp3.1</TargetFrameworks> <TargetFrameworks>net461;net5.0</TargetFrameworks>
<ApplicationIcon>jackett.ico</ApplicationIcon> <ApplicationIcon>jackett.ico</ApplicationIcon>
<AssemblyName>JackettUpdater</AssemblyName> <AssemblyName>JackettUpdater</AssemblyName>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>

View File

@ -5,6 +5,7 @@ MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BE7B0C8A-6144-47CD-821E-B09BA1B7BADE}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BE7B0C8A-6144-47CD-821E-B09BA1B7BADE}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
..\.editorconfig = ..\.editorconfig ..\.editorconfig = ..\.editorconfig
..\azure-pipelines.yml = ..\azure-pipelines.yml
..\Installer.iss = ..\Installer.iss ..\Installer.iss = ..\Installer.iss
..\LICENSE = ..\LICENSE ..\LICENSE = ..\LICENSE
..\README.md = ..\README.md ..\README.md = ..\README.md