Compare commits

...

13 Commits

Author SHA1 Message Date
Taloth Saldono 473b146ae2 Include ReferenceAssemblies for build agent 2019-12-29 00:43:05 +01:00
Taloth Saldono bdc0bb4441 Added Lidarr NuGet package url to get the sqlite package 2019-12-29 00:31:51 +01:00
Taloth Saldono 96c5a37ca8 Added netstandard and System.Runtime Facades from mono 5.18 2019-12-29 00:31:51 +01:00
Taloth Saldono ce0b7e1077 Increased mono dependency from 5.4 to 5.18 for debian 2019-12-29 00:31:51 +01:00
Taloth Saldono 29cde083f9 Added .NET Framework 4.7.2 requirement check to windows installer 2019-12-28 18:01:46 +01:00
Taloth Saldono 8faebc01ee Updated build scripts and added support for Visual Studio 2019 2019-12-28 18:01:46 +01:00
Taloth Saldono 2ea154b863 Updated Sqlite to x64 and upgraded to 1.0.111 2019-12-28 18:01:46 +01:00
Taloth Saldono d02dfc9ff1 Updated MediaInfo to x64 2019-12-25 11:45:29 +01:00
Taloth Saldono 7bcfa3d7b2 Updated Interop.NetFwTypeLib to x64 2019-12-25 11:44:44 +01:00
Taloth Saldono 1c1f9cddff Switched projects to x64 2019-12-25 00:40:18 +01:00
Taloth Saldono 8308d65375 Use Newtonsoft in TinyTwitter 2019-12-24 17:37:04 +01:00
Taloth Saldono d64d59ff27 Moved Windows-only Permission function to Sonarr.Windows 2019-12-24 17:18:07 +01:00
Taloth Saldono 8da6f7d7f4 Removed unused dialects from Marr so it compiles with less dependencies. 2019-12-24 13:47:04 +01:00
77 changed files with 394 additions and 14222 deletions

View File

@ -12,6 +12,8 @@ sourceFolder='./src'
slnFile=$sourceFolder/Sonarr.sln slnFile=$sourceFolder/Sonarr.sln
updateSubFolder=Sonarr.Update updateSubFolder=Sonarr.Update
sqlitePackageDir="$HOME/.nuget/packages/system.data.sqlite.core.lidarr/1.0.111-5"
nuget='tools/nuget/nuget.exe'; nuget='tools/nuget/nuget.exe';
vswhere='tools/vswhere/vswhere.exe'; vswhere='tools/vswhere/vswhere.exe';
@ -88,16 +90,17 @@ CleanFolder()
BuildWithMSBuild() BuildWithMSBuild()
{ {
installationPath=`$vswhere -latest -products \* -requires Microsoft.Component.MSBuild -property installationPath` msBuildPath=`$vswhere -latest -products \* -requires Microsoft.Component.MSBuild -find MSBuild\\\\\*\*\\\\Bin\\\\MSBuild.exe`
installationPath=${installationPath/C:\\/\/c\/} msBuildPath=${msBuildPath/C:\\/\/c\/}
installationPath=${installationPath//\\/\/} msBuildPath=${msBuildPath//\\/\/}
msBuild="$installationPath/MSBuild/$msBuildVersion/Bin" msBuildDir=$(dirname "$msBuildPath")
echo $msBuild
export PATH=$msBuild:$PATH echo $msBuildDir
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Clean //m
export PATH=$msBuildDir:$PATH
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x64 //t:Clean //m
$nuget restore $slnFile $nuget restore $slnFile
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x64 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb
} }
BuildWithXbuild() BuildWithXbuild()
@ -105,7 +108,7 @@ BuildWithXbuild()
export MONO_IOMAP=case export MONO_IOMAP=case
CheckExitCode xbuild /t:Clean $slnFile CheckExitCode xbuild /t:Clean $slnFile
mono $nuget restore $slnFile mono $nuget restore $slnFile
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile CheckExitCode xbuild /p:Configuration=Release /p:Platform=x64 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
} }
LintUI() LintUI()
@ -134,9 +137,6 @@ Build()
CleanFolder $outputFolder false CleanFolder $outputFolder false
echo "Removing Mono.Posix.dll"
rm $outputFolder/Mono.Posix.dll
ProgressEnd 'Build' ProgressEnd 'Build'
} }
@ -174,23 +174,11 @@ PatchMono()
{ {
local path=$1 local path=$1
# Below we deal with some mono incompatibilities with windows-only dotnet core/standard libs # Copy over the netstandard.dll facade since mono has no separate package for it and includes it in mono-devel
# See: https://github.com/mono/mono/blob/master/tools/nuget-hash-extractor/download.sh for assembly in netstandard System.Runtime
# That list defines assemblies that are prohibited from being loaded from the appdir, instead loading from mono GAC.
# We have debian dependencies to get these installed or facades from mono 5.10+
for assembly in System.IO.Compression System.Runtime.InteropServices.RuntimeInformation System.Net.Http System.Globalization.Extensions System.Text.Encoding.CodePages System.Threading.Overlapped
do do
if [ -e $path/$assembly.dll ]; then echo "Copy Mono-specific facade $assembly.dll"
if [ -e $sourceFolder/Libraries/Mono/$assembly.dll ]; then
echo "Copy Mono-specific facade $assembly.dll (uses win32 interop)"
cp $sourceFolder/Libraries/Mono/$assembly.dll $path/$assembly.dll cp $sourceFolder/Libraries/Mono/$assembly.dll $path/$assembly.dll
else
echo "Remove $assembly.dll (uses win32 interop)"
rm $path/$assembly.dll
fi
fi
done done
# Copy more stable version of Vectors for mono <5.12 # Copy more stable version of Vectors for mono <5.12
@ -240,10 +228,6 @@ PackageMono()
echo "Adding Sonarr.Core.dll.config (for dllmap)" echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $outputFolderLinux cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $outputFolderLinux
# Remove Http binding redirect by renaming it
# We don't need this anymore once our minimum mono version is 5.10
sed -i "s/System.Net.Http/System.Net.Http.Mono/g" $outputFolderLinux/Sonarr.Console.exe.config
echo "Renaming Sonarr.Console.exe to Sonarr.exe" echo "Renaming Sonarr.Console.exe to Sonarr.exe"
rm $outputFolderLinux/Sonarr.exe* rm $outputFolderLinux/Sonarr.exe*
for file in $outputFolderLinux/Sonarr.Console.exe*; do for file in $outputFolderLinux/Sonarr.Console.exe*; do
@ -273,11 +257,11 @@ PackageMacOS()
echo "Copying Binaries" echo "Copying Binaries"
cp -r $outputFolderLinux/* $outputFolderMacOS cp -r $outputFolderLinux/* $outputFolderMacOS
echo "Adding sqlite dylibs" echo "Adding sqlite dylib"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOS cp "$sqlitePackageDir/runtimes/osx-x64/native/net46"/* $outputFolderMacOS
echo "Adding MediaInfo dylib" echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOS cp $sourceFolder/Libraries/MediaInfo/x64/*.dylib $outputFolderMacOS
ProgressEnd 'Creating MacOS Package' ProgressEnd 'Creating MacOS Package'
} }
@ -298,11 +282,11 @@ PackageMacOSApp()
echo "Copying Binaries" echo "Copying Binaries"
cp -r $outputFolderLinux/* $outputFolderMacOSApp/Sonarr.app/Contents/MacOS cp -r $outputFolderLinux/* $outputFolderMacOSApp/Sonarr.app/Contents/MacOS
echo "Adding sqlite dylibs" echo "Adding sqlite dylib"
cp $sourceFolder/Libraries/Sqlite/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS cp "$sqlitePackageDir/runtimes/osx-x64/native/net46"/* $outputFolderMacOS
echo "Adding MediaInfo dylib" echo "Adding MediaInfo dylib"
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderMacOSApp/Sonarr.app/Contents/MacOS cp $sourceFolder/Libraries/MediaInfo/x64/*.dylib $outputFolderMacOS
echo "Removing Update Folder" echo "Removing Update Folder"
rm -r $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr.Update rm -r $outputFolderMacOSApp/Sonarr.app/Contents/MacOS/Sonarr.Update
@ -336,10 +320,6 @@ PackageTestsMono()
echo "Adding Sonarr.Core.dll.config (for dllmap)" echo "Adding Sonarr.Core.dll.config (for dllmap)"
cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $testPackageFolderLinux cp $sourceFolder/NzbDrone.Core/Sonarr.Core.dll.config $testPackageFolderLinux
# Remove Http binding redirect by renaming it
# We don't need this anymore once our minimum mono version is 5.10
sed -i "s/System.Net.Http/System.Net.Http.Mono/g" $testPackageFolderLinux/Sonarr.Common.Test.dll.config
cp ./test.sh $testPackageFolderLinux/ cp ./test.sh $testPackageFolderLinux/
dos2unix $testPackageFolderLinux/test.sh dos2unix $testPackageFolderLinux/test.sh

View File

@ -7,8 +7,8 @@ Vcs-Git: git@github.com:Sonarr/Sonarr.git
Vcs-Browser: https://github.com/Sonarr/Sonarr Vcs-Browser: https://github.com/Sonarr/Sonarr
Build-Depends: debhelper (>= 9), Build-Depends: debhelper (>= 9),
dh-systemd (>= 1.5), dh-systemd (>= 1.5),
mono-devel (>= 5.4), mono-devel (>= 5.18),
libmono-cil-dev (>= 5.4), libmono-cil-dev (>= 5.18),
cli-common-dev (>= 0.9+xamarin5) cli-common-dev (>= 0.9+xamarin5)
Package: sonarr Package: sonarr
@ -16,7 +16,7 @@ Architecture: all
Provides: nzbdrone Provides: nzbdrone
Conflicts: nzbdrone Conflicts: nzbdrone
Replaces: nzbdrone Replaces: nzbdrone
Depends: adduser, libsqlite3-0 (>= 3.7), libmediainfo0v5 (>= 0.7.52) | libmediainfo0 (>= 0.7.52), mono-runtime (>= 5.4), ca-certificates-mono, libmono-system-net-http4.0-cil (>= 4.0.0~alpha1), ${cli:Depends}, ${misc:Depends} Depends: adduser, libsqlite3-0 (>= 3.7), libmediainfo0v5 (>= 0.7.52) | libmediainfo0 (>= 0.7.52), mono-runtime (>= 5.18), ca-certificates-mono, libmono-system-net-http4.0-cil (>= 4.0.0~alpha1), ${cli:Depends}, ${misc:Depends}
Recommends: libmediainfo0v5 (>= 18.03) | libmediainfo0 (>= 18.03) Recommends: libmediainfo0v5 (>= 18.03) | libmediainfo0 (>= 18.03)
Suggests: sqlite3 (>= 3.7), mediainfo (>= 0.7.52) Suggests: sqlite3 (>= 3.7), mediainfo (>= 0.7.52)
Description: Internet PVR Description: Internet PVR

View File

@ -3,7 +3,7 @@
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1 #export DH_VERBOSE=1
EXCLUDE_MODULEREFS = crypt32 httpapi EXCLUDE_MODULEREFS = crypt32 httpapi __Internal
%: %:
dh $@ --with=systemd --with=cli dh $@ --with=systemd --with=cli

View File

@ -1,7 +1,7 @@
FROM ubuntu:xenial AS builder FROM ubuntu:xenial AS builder
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
ENV MONO_VERSION 5.14 ENV MONO_VERSION 5.18
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF && \
echo "deb http://download.mono-project.com/repo/debian stable-xenial/snapshots/$MONO_VERSION main" > /etc/apt/sources.list.d/mono-official-stable.list && \ echo "deb http://download.mono-project.com/repo/debian stable-xenial/snapshots/$MONO_VERSION main" > /etc/apt/sources.list.d/mono-official-stable.list && \

View File

@ -16,6 +16,7 @@ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E03280
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
libmono-system-runtime4.0-cil \ libmono-system-runtime4.0-cil \
libmono-system-net-http4.0-cil \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY startup.sh /startup.sh COPY startup.sh /startup.sh

View File

@ -2,16 +2,18 @@
opt_parallel= opt_parallel=
opt_version= opt_version=
opt_mode=both opt_mode=both
while getopts 'pv:m:?h' c while getopts 'pv:m:r?h' c
do do
case $c in case $c in
p) opt_parallel=1 ;; p) opt_parallel=1 ;;
v) opt_version=$OPTARG ;; v) opt_version=$OPTARG ;;
m) opt_mode=$OPTARG ;; m) opt_mode=$OPTARG ;;
r) opt_report=1 ;;
?|h) printf "Usage: %s [-p] [-v mono-ver] [-m sonarr|complete]\n" $0 ?|h) printf "Usage: %s [-p] [-v mono-ver] [-m sonarr|complete]\n" $0
printf " -p run parallel\n" printf " -p run parallel\n"
printf " -v run specified mono version\n" printf " -v run specified mono version\n"
printf " -m run only mono-'complete' or 'sonarr' package variants\n" printf " -m run only mono-'complete' or 'sonarr' package variants\n"
printf " -r only report\n"
exit 2 exit 2
esac esac
done done
@ -20,17 +22,22 @@ done
# make sure that the docker host has enough memory to handle about ~300 MB per container, so 2-3 GB total # make sure that the docker host has enough memory to handle about ~300 MB per container, so 2-3 GB total
# excess goes to the swap and will slow down the entire system # excess goes to the swap and will slow down the entire system
# Preferred versions MONO_VERSIONS=""
MONO_VERSIONS="6.0 5.20 5.18"
# Future versions # Future versions
MONO_VERSIONS="$MONO_VERSIONS 6.4=preview-xenial" MONO_VERSIONS="$MONO_VERSIONS 6.8=preview-xenial"
# Semi-Supported versions
MONO_VERSIONS="$MONO_VERSIONS 6.6 6.4 6.0"
# Supported versions # Supported versions
MONO_VERSIONS="$MONO_VERSIONS 5.16 5.14 5.12 5.10 5.8 5.4" MONO_VERSIONS="$MONO_VERSIONS 5.20 5.18"
# Legacy unsupported versions (but appear to work)
MONO_VERSIONS="$MONO_VERSIONS 5.16 5.14 5.12"
# Legacy unsupported versions # Legacy unsupported versions
MONO_VERSIONS="$MONO_VERSIONS 5.0" MONO_VERSIONS="$MONO_VERSIONS 5.10 5.8 5.4 5.0"
#MONO_VERSIONS="$MONO_VERSIONS 4.8=stable-wheezy/snapshots/4.8" #MONO_VERSIONS="$MONO_VERSIONS 4.8=stable-wheezy/snapshots/4.8"
if [ "$opt_version" != "" ]; then if [ "$opt_version" != "" ]; then
@ -86,23 +93,29 @@ runOne() {
echo "Finished Test Docker for mono $MONO_VERSION" echo "Finished Test Docker for mono $MONO_VERSION"
} }
if [ "$opt_parallel" == "1" ]; then if [ "$opt_report" != "1" ]; then
if [ "$opt_parallel" == "1" ]; then
for MONO_VERSION_PAIR in $MONO_VERSIONS; do
prepOne "$MONO_VERSION_PAIR"
done
fi
for MONO_VERSION_PAIR in $MONO_VERSIONS; do for MONO_VERSION_PAIR in $MONO_VERSIONS; do
prepOne "$MONO_VERSION_PAIR" if [ "$opt_parallel" == "1" ]; then
runOne "$MONO_VERSION_PAIR" &
else
prepOne "$MONO_VERSION_PAIR"
runOne "$MONO_VERSION_PAIR"
fi
done done
if [ "$opt_parallel" == "1" ]; then
echo "Waiting for all runs to finish"
wait
echo "Finished all runs"
fi
fi fi
for MONO_VERSION_PAIR in $MONO_VERSIONS; do grep "<test-run" ../../_tests_results/**/*.xml | sed -r 's/.*?mono-([0-9.]+(-s)?).*?_([IU]).*?\.xml.*?failed="([0-9]*)".*/\1\t\3:\tfailed \4/g' | sort -V -t.
if [ "$opt_parallel" == "1" ]; then
runOne "$MONO_VERSION_PAIR" &
else
prepOne "$MONO_VERSION_PAIR"
runOne "$MONO_VERSION_PAIR"
fi
done
if [ "$opt_parallel" == "1" ]; then
echo "Waiting for all runs to finish"
wait
echo "Finished all runs"
fi

View File

@ -48,8 +48,8 @@ Name: "startupShortcut"; Description: "Create shortcut in Startup folder (Starts
Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked
[Files] [Files]
Source: "..\_output\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\_output_windows\Sonarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\_output\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "..\_output_windows\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons] [Icons]
@ -77,3 +77,26 @@ var
begin begin
Exec(ExpandConstant('{commonappdata}\NzbDrone\bin\NzbDrone.Console.exe'), '/u', '', 0, ewWaitUntilTerminated, ResultCode) Exec(ExpandConstant('{commonappdata}\NzbDrone\bin\NzbDrone.Console.exe'), '/u', '', 0, ewWaitUntilTerminated, ResultCode)
end; end;
function Framework472IsNotInstalled(): Boolean;
var
bSuccess: Boolean;
regVersion: Cardinal;
begin
Result := True;
bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', regVersion);
if (True = bSuccess) and (regVersion >= 461808) then begin
Result := False;
end;
end;
function InitializeSetup(): Boolean;
begin
if Framework472IsNotInstalled() then begin
MsgBox('Sonarr requires Microsoft .NET Framework 4.7.2 or higher.'#13#13
'Please use Windows Update to install this version'#13
'or download it from https://dotnet.microsoft.com/download/dotnet-framework.', mbInformation, MB_OK);
result := false;
end else
result := true;
end;

View File

@ -3,6 +3,17 @@
<PropertyGroup> <PropertyGroup>
<SonarrRootDir>$(MSBuildThisFileDirectory)..\</SonarrRootDir> <SonarrRootDir>$(MSBuildThisFileDirectory)..\</SonarrRootDir>
<!-- Whether we want TargetFramework switching in Visual Studio -->
<TargetMultiple>false</TargetMultiple>
<TargetNet48>false</TargetNet48>
<TargetNetCore>false</TargetNetCore>
<TargetFrameworks>net472</TargetFrameworks>
<TargetFrameworks Condition=" '$(TargetNet48)'=='true' ">$(TargetFrameworks);net48</TargetFrameworks>
<TargetFrameworks Condition=" '$(TargetNetCore)'=='true' ">$(TargetFrameworks);netcoreapp3.0</TargetFrameworks>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
<!-- Specifies the type of output --> <!-- Specifies the type of output -->
<SonarrOutputType>Library</SonarrOutputType> <SonarrOutputType>Library</SonarrOutputType>
<SonarrOutputType Condition="$(MSBuildProjectName.Contains('.Test'))">Test</SonarrOutputType> <SonarrOutputType Condition="$(MSBuildProjectName.Contains('.Test'))">Test</SonarrOutputType>
@ -19,24 +30,41 @@
<SonarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceUninstall'))">true</SonarrProject> <SonarrProject Condition="$(MSBuildProjectName.StartsWith('ServiceUninstall'))">true</SonarrProject>
</PropertyGroup> </PropertyGroup>
<!-- Pick default RuntimeIdentifier for our compilation environment -->
<PropertyGroup Condition=" '$(TargetMultiple)'!='true' ">
<RuntimeIdentifiers></RuntimeIdentifiers>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<TargetFrameworks></TargetFrameworks>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
<PropertyGroup> <PropertyGroup>
<Configuration Condition="'$(Configuration)'==''">Release</Configuration> <Configuration Condition="'$(Configuration)'==''">Release</Configuration>
<TargetFrameworkPath>$(TargetFramework)\</TargetFrameworkPath>
<TargetFrameworkPath Condition="'$(Platform)'!='x64'">$(TargetFrameworkPath)$(Platform)\</TargetFrameworkPath>
<TargetFrameworkPath>$(TargetFrameworkPath)$(Configuration)\</TargetFrameworkPath>
<!-- Centralize intermediate and default outputs --> <!-- Centralize intermediate and default outputs -->
<BaseIntermediateOutputPath>$(SonarrRootDir)_temp\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath> <BaseIntermediateOutputPath>$(SonarrRootDir)_temp\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
<IntermediateOutputPath>$(SonarrRootDir)_temp\obj\$(MSBuildProjectName)\$(Configuration)\</IntermediateOutputPath> <IntermediateOutputPath>$(SonarrRootDir)_temp\obj\$(MSBuildProjectName)\$(TargetFrameworkPath)</IntermediateOutputPath>
<OutputPath>$(SonarrRootDir)_temp\bin\$(Configuration)\$(MSBuildProjectName)\</OutputPath> <OutputPath>$(SonarrRootDir)_temp\bin\$(TargetFrameworkPath)$(MSBuildProjectName)\</OutputPath>
<!-- Flatten the 'real' output paths for backward compat -->
<OutputTargetFrameworkPath>$(TargetFrameworkPath)</OutputTargetFrameworkPath>
<OutputTargetFrameworkPath Condition=" '$(TargetMultiple)'!='true' "></OutputTargetFrameworkPath>
<!-- Output to _output and _tests respectively --> <!-- Output to _output and _tests respectively -->
<OutputPath Condition="'$(SonarrProject)'=='true'">$(SonarrRootDir)_output\</OutputPath> <OutputPath Condition="'$(SonarrProject)'=='true'">$(SonarrRootDir)_output\$(OutputTargetFrameworkPath)</OutputPath>
<OutputPath Condition="'$(SonarrOutputType)'=='Test'">$(SonarrRootDir)_tests\</OutputPath> <OutputPath Condition="'$(SonarrOutputType)'=='Test'">$(SonarrRootDir)_tests\$(OutputTargetFrameworkPath)</OutputPath>
<OutputPath Condition="'$(SonarrOutputType)'=='Update'">$(SonarrRootDir)_output\Sonarr.Update\</OutputPath> <OutputPath Condition="'$(SonarrOutputType)'=='Update'">$(OutputPath)Sonarr.Update\</OutputPath>
<!-- Paths relative to project file for better readability --> <!-- Paths relative to project file for better readability -->
<BaseIntermediateOutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(BaseIntermediateOutputPath)'))</BaseIntermediateOutputPath> <BaseIntermediateOutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(BaseIntermediateOutputPath)'))</BaseIntermediateOutputPath>
<IntermediateOutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(IntermediateOutputPath)'))</IntermediateOutputPath> <IntermediateOutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(IntermediateOutputPath)'))</IntermediateOutputPath>
<OutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(OutputPath)'))</OutputPath> <OutputPath>$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '$(OutputPath)'))</OutputPath>
<!-- below net4.7.1 the new portable pdb format has no line numbers, pdb to mdb probably doesn't like it either --> <!-- Below net4.7.1 the new portable pdb format has no line numbers, pdb to mdb probably doesn't like it either -->
<DebugType>full</DebugType> <DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
</PropertyGroup> </PropertyGroup>
@ -73,8 +101,15 @@
<PropertyGroup> <PropertyGroup>
<!-- We don't want separate framework directories till we go dotnet core --> <!-- We don't want separate framework directories till we go dotnet core -->
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<!-- For now keep the NzbDrone namespace --> <!-- For now keep the NzbDrone namespace -->
<RootNamespace Condition="'$(SonarrProject)'=='true'">$(MSBuildProjectName.Replace('Sonarr','NzbDrone'))</RootNamespace> <RootNamespace Condition="'$(SonarrProject)'=='true'">$(MSBuildProjectName.Replace('Sonarr','NzbDrone'))</RootNamespace>
</PropertyGroup> </PropertyGroup>
<!-- Get the reference assemblies for build agent -->
<ItemGroup Condition="'$(TargetFramework)'=='net472'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.0" />
</ItemGroup>
</Project> </Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +1,4 @@
Copied from mono/4.5/Facades of the mono 5.4 release. Copied from mono/4.5/Facades.
These are the mono version of the dotnet Core TypeForwardedTo assemblies. These are the mono version of the dotnet Core TypeForwardedTo assemblies.
Using these assemblies is no longer necessary once we reach mono 5.18 as minimum version
netstandard.dll Exists in mono-devel but we include it ourselves until mono has the right package dependency

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
libsqlite3.0.dylib

Binary file not shown.

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<AssemblyVersion>2.6.0.0</AssemblyVersion> <AssemblyVersion>2.6.0.0</AssemblyVersion>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute> <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<AssemblyVersion>2.4.0.0</AssemblyVersion> <AssemblyVersion>2.4.0.0</AssemblyVersion>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute> <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<AssemblyVersion>3.17.0.0</AssemblyVersion> <AssemblyVersion>3.17.0.0</AssemblyVersion>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute> <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>

View File

@ -1,68 +0,0 @@
/* Copyright (C) 2008 - 2011 Jordan Marr
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.Data;
using System.Data.OleDb;
namespace Marr.Data.Parameters
{
public class OleDbTypeBuilder : IDbTypeBuilder
{
public Enum GetDbType(Type type)
{
if (type == typeof(String))
return OleDbType.VarChar;
if (type == typeof(Int32))
return OleDbType.Integer;
if (type == typeof(Decimal))
return OleDbType.Decimal;
if (type == typeof(DateTime))
return OleDbType.DBTimeStamp;
if (type == typeof(Boolean))
return OleDbType.Boolean;
if (type == typeof(Int16))
return OleDbType.SmallInt;
if (type == typeof(Int64))
return OleDbType.BigInt;
if (type == typeof(Double))
return OleDbType.Double;
if (type == typeof(Byte))
return OleDbType.Binary;
if (type == typeof(Byte[]))
return OleDbType.VarBinary;
if (type == typeof(Guid))
return OleDbType.Guid;
return OleDbType.Variant;
}
public void SetDbType(IDbDataParameter param, Enum dbType)
{
var oleDbParam = (OleDbParameter)param;
oleDbParam.OleDbType = (OleDbType)dbType;
}
}
}

View File

@ -1,71 +0,0 @@
/* Copyright (C) 2008 - 2011 Jordan Marr
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.Data;
using System.Data.SqlClient;
namespace Marr.Data.Parameters
{
public class SqlDbTypeBuilder : IDbTypeBuilder
{
public Enum GetDbType(Type type)
{
if (type == typeof(String))
return SqlDbType.VarChar;
if (type == typeof(Int32))
return SqlDbType.Int;
if (type == typeof(Decimal))
return SqlDbType.Decimal;
if (type == typeof(DateTime))
return SqlDbType.DateTime;
if (type == typeof(Boolean))
return SqlDbType.Bit;
if (type == typeof(Int16))
return SqlDbType.SmallInt;
if (type == typeof(Int64))
return SqlDbType.BigInt;
if (type == typeof(Double))
return SqlDbType.Float;
if (type == typeof(Char))
return SqlDbType.Char;
if (type == typeof(Byte))
return SqlDbType.Binary;
if (type == typeof(Byte[]))
return SqlDbType.VarBinary;
if (type == typeof(Guid))
return SqlDbType.UniqueIdentifier;
return SqlDbType.Variant;
}
public void SetDbType(IDbDataParameter param, Enum dbType)
{
var sqlDbParam = (SqlParameter)param;
sqlDbParam.SqlDbType = (SqlDbType)dbType;
}
}
}

View File

@ -1,17 +0,0 @@
using System;
namespace Marr.Data.QGen.Dialects
{
public class FirebirdDialect : Dialect
{
public override string CreateToken(string token)
{
if (string.IsNullOrEmpty(token))
{
return string.Empty;
}
return token.Replace('[', new Char()).Replace(']', new Char());
}
}
}

View File

@ -1,35 +0,0 @@
using System;
using System.Linq;
using System.Text;
namespace Marr.Data.QGen.Dialects
{
public class OracleDialect : Dialect
{
public override string CreateToken(string token)
{
if (string.IsNullOrEmpty(token))
{
return string.Empty;
}
string[] parts = token.Replace('[', new Char()).Replace(']', new Char()).Split('.');
StringBuilder sb = new StringBuilder();
foreach (string part in parts)
{
if (sb.Length > 0)
sb.Append(".");
bool hasSpaces = part.Contains(' ');
if (hasSpaces)
sb.Append("[").Append(part).Append("]");
else
sb.Append(part);
}
return sb.ToString();
}
}
}

View File

@ -1,21 +0,0 @@
namespace Marr.Data.QGen.Dialects
{
public class SqlServerCeDialect : Dialect
{
public override string IdentityQuery
{
get
{
return "SELECT @@IDENTITY;";
}
}
public override bool SupportsBatchQueries
{
get
{
return false;
}
}
}
}

View File

@ -1,13 +0,0 @@
namespace Marr.Data.QGen.Dialects
{
public class SqlServerDialect : Dialect
{
public override string IdentityQuery
{
get
{
return "SELECT SCOPE_IDENTITY();";
}
}
}
}

View File

@ -9,12 +9,6 @@ namespace Marr.Data.QGen
/// </summary> /// </summary>
internal class QueryFactory internal class QueryFactory
{ {
private const string DB_SqlClient = "System.Data.SqlClient.SqlClientFactory";
private const string DB_OleDb = "System.Data.OleDb.OleDbFactory";
private const string DB_SqlCeClient = "System.Data.SqlServerCe.SqlCeProviderFactory";
private const string DB_SystemDataOracleClient = "System.Data.OracleClientFactory";
private const string DB_OracleDataAccessClient = "Oracle.DataAccess.Client.OracleClientFactory";
private const string DB_FireBirdClient = "FirebirdSql.Data.FirebirdClient.FirebirdClientFactory";
private const string DB_SQLiteClient = "System.Data.SQLite.SQLiteFactory"; private const string DB_SQLiteClient = "System.Data.SQLite.SQLiteFactory";
public static IQuery CreateUpdateQuery(ColumnMapCollection columns, IDataMapper dataMapper, string target, string whereClause) public static IQuery CreateUpdateQuery(ColumnMapCollection columns, IDataMapper dataMapper, string target, string whereClause)
@ -47,12 +41,6 @@ namespace Marr.Data.QGen
string providerString = dataMapper.ProviderFactory.ToString(); string providerString = dataMapper.ProviderFactory.ToString();
switch (providerString) switch (providerString)
{ {
case DB_SqlClient:
return new RowCountQueryDecorator(innerQuery);
case DB_SqlCeClient:
return new RowCountQueryDecorator(innerQuery);
case DB_SQLiteClient: case DB_SQLiteClient:
return new SqliteRowCountQueryDecorator(innerQuery); return new SqliteRowCountQueryDecorator(innerQuery);
@ -68,12 +56,6 @@ namespace Marr.Data.QGen
string providerString = dataMapper.ProviderFactory.ToString(); string providerString = dataMapper.ProviderFactory.ToString();
switch (providerString) switch (providerString)
{ {
case DB_SqlClient:
return new PagingQueryDecorator(innerQuery, skip, take);
case DB_SqlCeClient:
return new PagingQueryDecorator(innerQuery, skip, take);
case DB_SQLiteClient: case DB_SQLiteClient:
return new SqlitePagingQueryDecorator(innerQuery, skip, take); return new SqlitePagingQueryDecorator(innerQuery, skip, take);
@ -87,21 +69,6 @@ namespace Marr.Data.QGen
string providerString = dataMapper.ProviderFactory.ToString(); string providerString = dataMapper.ProviderFactory.ToString();
switch (providerString) switch (providerString)
{ {
case DB_SqlClient:
return new SqlServerDialect();
case DB_OracleDataAccessClient:
return new OracleDialect();
case DB_SystemDataOracleClient:
return new OracleDialect();
case DB_SqlCeClient:
return new SqlServerCeDialect();
case DB_FireBirdClient:
return new FirebirdDialect();
case DB_SQLiteClient: case DB_SQLiteClient:
return new SqliteDialect(); return new SqliteDialect();

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<Version>9.0.21022</Version> <Version>9.0.21022</Version>
</PropertyGroup> </PropertyGroup>

6
src/NuGet.config Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="Lidarr SQLite" value="https://pkgs.dev.azure.com/Lidarr/Lidarr/_packaging/SQLite/nuget/v3/index.json" />
</packageSources>
</configuration>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NBuilder" Version="6.0.0" /> <PackageReference Include="NBuilder" Version="6.0.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FluentValidation" Version="8.4.0" /> <PackageReference Include="FluentValidation" Version="8.4.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Selenium.Firefox.WebDriver" Version="0.24.0" /> <PackageReference Include="Selenium.Firefox.WebDriver" Version="0.24.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Host\Sonarr.Host.csproj" /> <ProjectReference Include="..\NzbDrone.Host\Sonarr.Host.csproj" />

View File

@ -31,6 +31,7 @@ namespace NzbDrone.Common.Disk
public abstract long? GetAvailableSpace(string path); public abstract long? GetAvailableSpace(string path);
public abstract void InheritFolderPermissions(string filename); public abstract void InheritFolderPermissions(string filename);
public abstract void SetEveryonePermissions(string filename);
public abstract void SetPermissions(string path, string mask, string user, string group); public abstract void SetPermissions(string path, string mask, string user, string group);
public abstract void CopyPermissions(string sourcePath, string targetPath, bool includeOwner); public abstract void CopyPermissions(string sourcePath, string targetPath, bool includeOwner);
public abstract long? GetTotalSize(string path); public abstract long? GetTotalSize(string path);
@ -317,42 +318,6 @@ namespace NzbDrone.Common.Disk
return parent.FullName; return parent.FullName;
} }
public void SetPermissions(string filename, WellKnownSidType accountSid, FileSystemRights rights, AccessControlType controlType)
{
try
{
var sid = new SecurityIdentifier(accountSid, null);
var directoryInfo = new DirectoryInfo(filename);
var directorySecurity = directoryInfo.GetAccessControl(AccessControlSections.Access);
var rules = directorySecurity.GetAccessRules(true, false, typeof(SecurityIdentifier));
if (rules.OfType<FileSystemAccessRule>().Any(acl => acl.AccessControlType == controlType && (acl.FileSystemRights & rights) == rights && acl.IdentityReference.Equals(sid)))
{
return;
}
var accessRule = new FileSystemAccessRule(sid, rights,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly, controlType);
bool modified;
directorySecurity.ModifyAccessRule(AccessControlModification.Add, accessRule, out modified);
if (modified)
{
directoryInfo.SetAccessControl(directorySecurity);
}
}
catch (Exception e)
{
Logger.Warn(e, "Couldn't set permission for {0}. account:{1} rights:{2} accessControlType:{3}", filename, accountSid, rights, controlType);
throw;
}
}
private static void RemoveReadOnly(string path) private static void RemoveReadOnly(string path)
{ {
if (File.Exists(path)) if (File.Exists(path))

View File

@ -10,6 +10,7 @@ namespace NzbDrone.Common.Disk
{ {
long? GetAvailableSpace(string path); long? GetAvailableSpace(string path);
void InheritFolderPermissions(string filename); void InheritFolderPermissions(string filename);
void SetEveryonePermissions(string filename);
void SetPermissions(string path, string mask, string user, string group); void SetPermissions(string path, string mask, string user, string group);
void CopyPermissions(string sourcePath, string targetPath, bool includeOwner = false); void CopyPermissions(string sourcePath, string targetPath, bool includeOwner = false);
long? GetTotalSize(string path); long? GetTotalSize(string path);
@ -39,7 +40,6 @@ namespace NzbDrone.Common.Disk
bool IsFileLocked(string path); bool IsFileLocked(string path);
string GetPathRoot(string path); string GetPathRoot(string path);
string GetParentFolder(string path); string GetParentFolder(string path);
void SetPermissions(string filename, WellKnownSidType accountSid, FileSystemRights rights, AccessControlType controlType);
FileAttributes GetFileAttributes(string path); FileAttributes GetFileAttributes(string path);
void EmptyFolder(string path); void EmptyFolder(string path);
string GetVolumeLabel(string path); string GetVolumeLabel(string path);

View File

@ -66,7 +66,7 @@ namespace NzbDrone.Common.EnvironmentInfo
{ {
try try
{ {
_diskProvider.SetPermissions(_appFolderInfo.AppDataFolder, WellKnownSidType.WorldSid, FileSystemRights.Modify, AccessControlType.Allow); _diskProvider.SetEveryonePermissions(_appFolderInfo.AppDataFolder);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DotNet4.SocksProxy" Version="1.4.0.1" /> <PackageReference Include="DotNet4.SocksProxy" Version="1.4.0.1" />
@ -9,6 +8,7 @@
<PackageReference Include="NLog" Version="4.6.6" /> <PackageReference Include="NLog" Version="4.6.6" />
<PackageReference Include="Sentry" Version="1.2.0" /> <PackageReference Include="Sentry" Version="1.2.0" />
<PackageReference Include="SharpZipLib" Version="1.2.0" /> <PackageReference Include="SharpZipLib" Version="1.2.0" />
<PackageReference Include="System.Data.SQLite.Core.Lidarr" Version="1.0.111-5" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" /> <PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -16,9 +16,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System.Configuration.Install" /> <Reference Include="System.Configuration.Install" />
<Reference Include="System.Data.SQLite">
<HintPath>..\Libraries\Sqlite\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.ServiceProcess" /> <Reference Include="System.ServiceProcess" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<ApplicationIcon>..\NzbDrone.Host\Sonarr.ico</ApplicationIcon> <ApplicationIcon>..\NzbDrone.Host\Sonarr.ico</ApplicationIcon>
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>

View File

@ -27,9 +27,6 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
Subject.Check().ShouldBeOk(); Subject.Check().ShouldBeOk();
} }
[TestCase("4.6.2")]
[TestCase("4.7")]
[TestCase("4.7.1")]
public void should_return_notice(string version) public void should_return_notice(string version)
{ {
GivenOutput(version); GivenOutput(version);
@ -47,6 +44,9 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[TestCase("4.5")] [TestCase("4.5")]
[TestCase("4.5.2")] [TestCase("4.5.2")]
[TestCase("4.6.1")] [TestCase("4.6.1")]
[TestCase("4.6.2")]
[TestCase("4.7")]
[TestCase("4.7.1")]
public void should_return_error(string version) public void should_return_error(string version)
{ {
GivenOutput(version); GivenOutput(version);
@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
} }
[Test] [Test]
public void should_return_ok_for_net462_on_Win1511() public void should_return_nok_for_net462_on_Win1511()
{ {
Mocker.GetMock<IOsInfo>() Mocker.GetMock<IOsInfo>()
.SetupGet(v => v.Version) .SetupGet(v => v.Version)
@ -63,7 +63,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
GivenOutput("4.6.2"); GivenOutput("4.6.2");
Subject.Check().ShouldBeOk(); Subject.Check().ShouldBeError();
} }
} }
} }

View File

@ -20,6 +20,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[TestCase("5.18")] [TestCase("5.18")]
[TestCase("5.20")] [TestCase("5.20")]
[TestCase("6.4")]
public void should_return_ok(string version) public void should_return_ok(string version)
{ {
GivenOutput(version); GivenOutput(version);
@ -27,7 +28,6 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
Subject.Check().ShouldBeOk(); Subject.Check().ShouldBeOk();
} }
[TestCase("5.16")]
public void should_return_notice(string version) public void should_return_notice(string version)
{ {
GivenOutput(version); GivenOutput(version);
@ -35,8 +35,6 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
Subject.Check().ShouldBeNotice(); Subject.Check().ShouldBeNotice();
} }
[TestCase("5.4")]
[TestCase("5.8")]
public void should_return_warning(string version) public void should_return_warning(string version)
{ {
GivenOutput(version); GivenOutput(version);
@ -57,6 +55,12 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[TestCase("4.2")] [TestCase("4.2")]
[TestCase("4.4.0")] [TestCase("4.4.0")]
[TestCase("4.4.1")] [TestCase("4.4.1")]
[TestCase("5.4")]
[TestCase("5.8")]
[TestCase("5.10")]
[TestCase("5.12")]
[TestCase("5.14")]
[TestCase("5.16")]
public void should_return_error(string version) public void should_return_error(string version)
{ {
GivenOutput(version); GivenOutput(version);

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NBuilder" Version="6.0.0" /> <PackageReference Include="NBuilder" Version="6.0.0" />
@ -15,9 +14,6 @@
<Link>Files\1024.png</Link> <Link>Files\1024.png</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<Reference Include="System.Data.SQLite">
<HintPath>..\Libraries\Sqlite\System.Data.SQLite.dll</HintPath>
</Reference>
<None Update="Files\**\*.*"> <None Update="Files\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>

View File

@ -28,12 +28,6 @@ namespace NzbDrone.Core.HealthCheck.Checks
// Target .Net version, which would allow us to increase our target framework // Target .Net version, which would allow us to increase our target framework
var targetVersion = new Version("4.7.2"); var targetVersion = new Version("4.7.2");
if (Version.TryParse(_osInfo.Version, out var osVersion) && osVersion < new Version("10.0.14393"))
{
// Windows 10 LTSB 1511 and before do not support 4.7.x
targetVersion = new Version("4.6.2");
}
if (dotnetVersion >= targetVersion) if (dotnetVersion >= targetVersion)
{ {
_logger.Debug("Dotnet version is {0} or better: {1}", targetVersion, dotnetVersion); _logger.Debug("Dotnet version is {0} or better: {1}", targetVersion, dotnetVersion);
@ -41,7 +35,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
} }
// Supported .net version but below our desired target // Supported .net version but below our desired target
var stableVersion = new Version("4.6.2"); var stableVersion = new Version("4.7.2");
if (dotnetVersion >= stableVersion) if (dotnetVersion >= stableVersion)
{ {
_logger.Debug("Dotnet version is {0} or better: {1}", stableVersion, dotnetVersion); _logger.Debug("Dotnet version is {0} or better: {1}", stableVersion, dotnetVersion);
@ -50,6 +44,21 @@ namespace NzbDrone.Core.HealthCheck.Checks
"#currently-installed-net-framework-is-supported-but-upgrading-is-recommended"); "#currently-installed-net-framework-is-supported-but-upgrading-is-recommended");
} }
if (Version.TryParse(_osInfo.Version, out var osVersion) && osVersion < new Version("10.0.14393"))
{
return new HealthCheck(GetType(), HealthCheckResult.Error,
$"Currently installed .Net Framework {dotnetVersion} is no longer supported. However your Operating System cannot be upgraded to {targetVersion}.",
"#currently-installed-net-framework-is-old-and-unsupported");
}
var oldVersion = new Version("4.6.2");
if (dotnetVersion >= oldVersion)
{
return new HealthCheck(GetType(), HealthCheckResult.Error,
$"Currently installed .Net Framework {dotnetVersion} is no longer supported. Please upgrade the .Net Framework to at least {targetVersion}.",
"#currently-installed-net-framework-is-old-and-unsupported");
}
return new HealthCheck(GetType(), HealthCheckResult.Error, return new HealthCheck(GetType(), HealthCheckResult.Error,
$"Currently installed .Net Framework {dotnetVersion} is old and unsupported. Please upgrade the .Net Framework to at least {targetVersion}.", $"Currently installed .Net Framework {dotnetVersion} is old and unsupported. Please upgrade the .Net Framework to at least {targetVersion}.",
"#currently-installed-net-framework-is-old-and-unsupported"); "#currently-installed-net-framework-is-old-and-unsupported");

View File

@ -43,7 +43,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
} }
// Stable Mono versions // Stable Mono versions
var stableVersion = new Version("5.16"); var stableVersion = new Version("5.18");
if (monoVersion >= stableVersion) if (monoVersion >= stableVersion)
{ {
_logger.Debug("Mono version is {0} or better: {1}", stableVersion, monoVersion); _logger.Debug("Mono version is {0} or better: {1}", stableVersion, monoVersion);
@ -51,15 +51,13 @@ namespace NzbDrone.Core.HealthCheck.Checks
$"Currently installed Mono version {monoVersion} is supported but upgrading to {bestVersion} is recommended.", $"Currently installed Mono version {monoVersion} is supported but upgrading to {bestVersion} is recommended.",
"#currently-installed-mono-version-is-supported-but-upgrading-is-recommended"); "#currently-installed-mono-version-is-supported-but-upgrading-is-recommended");
} }
// Old but supported Mono versions, there are known bugs var oldVersion = new Version("5.4");
var supportedVersion = new Version("5.4"); if (monoVersion >= oldVersion)
if (monoVersion >= supportedVersion)
{ {
_logger.Debug("Mono version is {0} or better: {1}", supportedVersion, monoVersion); return new HealthCheck(GetType(), HealthCheckResult.Error,
return new HealthCheck(GetType(), HealthCheckResult.Warning, $"Currently installed Mono version {monoVersion} is no longer supported. Please upgrade Mono to version {bestVersion}.",
$"Currently installed Mono version {monoVersion} is supported but has some known issues. Please upgrade Mono to version {bestVersion}.", "#currently-installed-mono-version-is-old-and-unsupported");
"#currently-installed-mono-version-is-supported-but-upgrading-is-recommended");
} }
return new HealthCheck(GetType(), HealthCheckResult.Error, return new HealthCheck(GetType(), HealthCheckResult.Error,

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FluentMigrator.Runner" Version="1.6.2" /> <PackageReference Include="FluentMigrator.Runner" Version="1.6.2" />
@ -28,9 +27,6 @@
<Reference Include="Growl.CoreLibrary"> <Reference Include="Growl.CoreLibrary">
<HintPath>..\Libraries\Growl.CoreLibrary.dll</HintPath> <HintPath>..\Libraries\Growl.CoreLibrary.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Data.SQLite">
<HintPath>..\Libraries\Sqlite\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Web" /> <Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" /> <Reference Include="System.Web.Extensions" />
</ItemGroup> </ItemGroup>
@ -38,10 +34,10 @@
<EmbeddedResource Include="..\..\Logo\64.png"> <EmbeddedResource Include="..\..\Logo\64.png">
<Link>Resources\Logo\64.png</Link> <Link>Resources\Logo\64.png</Link>
</EmbeddedResource> </EmbeddedResource>
<None Include="..\Libraries\Sqlite\sqlite3.dll"> <None Include="..\Libraries\MediaInfo\$(Platform)\MediaInfo.dll" Condition="'$(RuntimeIdentifier)'=='win-x64'">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
<None Include="..\Libraries\MediaInfo\MediaInfo.dll"> <None Include="..\Libraries\MediaInfo\$(Platform)\libmediainfo.0.dylib" Condition="'$(RuntimeIdentifier)'=='osx-x64'">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None> </None>
</ItemGroup> </ItemGroup>

View File

@ -1,4 +1,5 @@
using System; using Newtonsoft.Json;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
@ -7,7 +8,6 @@ using System.Net;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
namespace TinyTwitter namespace TinyTwitter
{ {
@ -93,9 +93,7 @@ namespace TinyTwitter
var responseContent = builder.Execute(); var responseContent = builder.Execute();
var serializer = new JavaScriptSerializer(); var tweets = (object[])JsonConvert.DeserializeObject(responseContent);
var tweets = (object[])serializer.DeserializeObject(responseContent);
return tweets.Cast<Dictionary<string, object>>().Select(tweet => return tweets.Cast<Dictionary<string, object>>().Select(tweet =>
{ {

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Host\Sonarr.Host.csproj" /> <ProjectReference Include="..\NzbDrone.Host\Sonarr.Host.csproj" />

View File

@ -31,13 +31,13 @@ namespace NzbDrone.Host.AccessControl
{ {
if (!IsNzbDronePortOpen(_configFileProvider.Port)) if (!IsNzbDronePortOpen(_configFileProvider.Port))
{ {
_logger.Debug("Opening Port for NzbDrone: {0}", _configFileProvider.Port); _logger.Debug("Opening Port for Sonarr: {0}", _configFileProvider.Port);
OpenFirewallPort(_configFileProvider.Port); OpenFirewallPort(_configFileProvider.Port);
} }
if (_configFileProvider.EnableSsl && !IsNzbDronePortOpen(_configFileProvider.SslPort)) if (_configFileProvider.EnableSsl && !IsNzbDronePortOpen(_configFileProvider.SslPort))
{ {
_logger.Debug("Opening SSL Port for NzbDrone: {0}", _configFileProvider.SslPort); _logger.Debug("Opening SSL Port for Sonarr: {0}", _configFileProvider.SslPort);
OpenFirewallPort(_configFileProvider.SslPort); OpenFirewallPort(_configFileProvider.SslPort);
} }
} }

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNet.SignalR.SelfHost" Version="2.4.0" /> <PackageReference Include="Microsoft.AspNet.SignalR.SelfHost" Version="2.4.0" />
@ -17,8 +16,8 @@
<ProjectReference Include="..\Sonarr.Http\Sonarr.Http.csproj" /> <ProjectReference Include="..\Sonarr.Http\Sonarr.Http.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Interop.NetFwTypeLib"> <Reference Include="Interop.NetFwTypeLib" Condition="'$(RuntimeIdentifier)'=='win-x64'">
<HintPath>..\Libraries\Interop.NetFwTypeLib.dll</HintPath> <HintPath>..\Libraries\FirewallApi\$(Platform)\Interop.NetFwTypeLib.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes> <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference> </Reference>
<Reference Include="System.ServiceProcess" /> <Reference Include="System.ServiceProcess" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNet.SignalR.Client" Version="2.4.0" /> <PackageReference Include="Microsoft.AspNet.SignalR.Client" Version="2.4.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Sonarr.Test.Common.csproj" /> <ProjectReference Include="..\NzbDrone.Test.Common\Sonarr.Test.Common.csproj" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Common.Test\Sonarr.Common.Test.csproj" /> <ProjectReference Include="..\NzbDrone.Common.Test\Sonarr.Common.Test.csproj" />
@ -11,6 +10,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Mono.Posix"> <Reference Include="Mono.Posix">
<HintPath>..\Libraries\Mono.Posix.dll</HintPath> <HintPath>..\Libraries\Mono.Posix.dll</HintPath>
<Private>false</Private>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -53,20 +53,12 @@ namespace NzbDrone.Mono.Disk
public override void InheritFolderPermissions(string filename) public override void InheritFolderPermissions(string filename)
{ {
Ensure.That(filename, () => filename).IsValidPath();
try }
{
var fs = File.GetAccessControl(filename); public override void SetEveryonePermissions(string filename)
fs.SetAccessRuleProtection(false, false); {
File.SetAccessControl(filename, fs);
}
catch (NotImplementedException)
{
}
catch (PlatformNotSupportedException)
{
}
} }
public override void SetPermissions(string path, string mask, string user, string group) public override void SetPermissions(string path, string mask, string user, string group)

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NLog" Version="4.6.6" /> <PackageReference Include="NLog" Version="4.6.6" />
@ -12,6 +11,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Mono.Posix"> <Reference Include="Mono.Posix">
<HintPath>..\Libraries\Mono.Posix.dll</HintPath> <HintPath>..\Libraries\Mono.Posix.dll</HintPath>
<Private>false</Private>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNet.SignalR.SelfHost" Version="2.4.0" /> <PackageReference Include="Microsoft.AspNet.SignalR.SelfHost" Version="2.4.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FluentAssertions" Version="5.8.0" /> <PackageReference Include="FluentAssertions" Version="5.8.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Test.Common\Sonarr.Test.Common.csproj" /> <ProjectReference Include="..\NzbDrone.Test.Common\Sonarr.Test.Common.csproj" />

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NLog" Version="4.6.6" /> <PackageReference Include="NLog" Version="4.6.6" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\NzbDrone.Common.Test\Sonarr.Common.Test.csproj" /> <ProjectReference Include="..\NzbDrone.Common.Test\Sonarr.Common.Test.csproj" />

View File

@ -1,6 +1,9 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Security.Principal;
using NLog; using NLog;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Common.EnsureThat; using NzbDrone.Common.EnsureThat;
@ -39,9 +42,50 @@ namespace NzbDrone.Windows.Disk
{ {
Ensure.That(filename, () => filename).IsValidPath(); Ensure.That(filename, () => filename).IsValidPath();
var fs = File.GetAccessControl(filename); var fileInfo = new FileInfo(filename);
var fs = fileInfo.GetAccessControl(AccessControlSections.Access);
fs.SetAccessRuleProtection(false, false); fs.SetAccessRuleProtection(false, false);
File.SetAccessControl(filename, fs); fileInfo.SetAccessControl(fs);
}
public override void SetEveryonePermissions(string filename)
{
var accountSid = WellKnownSidType.WorldSid;
var rights = FileSystemRights.Modify;
var controlType = AccessControlType.Allow;
try
{
var sid = new SecurityIdentifier(accountSid, null);
var directoryInfo = new DirectoryInfo(filename);
var directorySecurity = directoryInfo.GetAccessControl(AccessControlSections.Access);
var rules = directorySecurity.GetAccessRules(true, false, typeof(SecurityIdentifier));
if (rules.OfType<FileSystemAccessRule>().Any(acl => acl.AccessControlType == controlType && (acl.FileSystemRights & rights) == rights && acl.IdentityReference.Equals(sid)))
{
return;
}
var accessRule = new FileSystemAccessRule(sid, rights,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.InheritOnly, controlType);
bool modified;
directorySecurity.ModifyAccessRule(AccessControlModification.Add, accessRule, out modified);
if (modified)
{
directoryInfo.SetAccessControl(directorySecurity);
}
}
catch (Exception e)
{
Logger.Warn(e, "Couldn't set permission for {0}. account:{1} rights:{2} accessControlType:{3}", filename, accountSid, rights, controlType);
throw;
}
} }
public override void SetPermissions(string path, string mask, string user, string group) public override void SetPermissions(string path, string mask, string user, string group)

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="NLog" Version="4.6.6" /> <PackageReference Include="NLog" Version="4.6.6" />

View File

@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
<ApplicationIcon>..\NzbDrone.Host\Sonarr.ico</ApplicationIcon> <ApplicationIcon>..\NzbDrone.Host\Sonarr.ico</ApplicationIcon>
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FluentValidation" Version="8.4.0" /> <PackageReference Include="FluentValidation" Version="8.4.0" />

View File

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net462</TargetFramework> <Platforms>x64</Platforms>
<Platforms>x86</Platforms>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FluentValidation" Version="8.4.0" /> <PackageReference Include="FluentValidation" Version="8.4.0" />
@ -16,8 +15,5 @@
<ProjectReference Include="..\NzbDrone.SignalR\Sonarr.SignalR.csproj" /> <ProjectReference Include="..\NzbDrone.SignalR\Sonarr.SignalR.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System.Data.SQLite">
<HintPath>..\Libraries\Sqlite\System.Data.SQLite.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio Version 16
VisualStudioVersion = 15.0.27130.2010 VisualStudioVersion = 16.0.29519.87
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sonarr.Console", "NzbDrone.Console\Sonarr.Console.csproj", "{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sonarr.Console", "NzbDrone.Console\Sonarr.Console.csproj", "{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}"
ProjectSection(ProjectDependencies) = postProject ProjectSection(ProjectDependencies) = postProject
@ -53,6 +53,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sonarr.Common", "NzbDrone.C
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{1E6B3CBE-1578-41C1-9BF9-78D818740BE9}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{1E6B3CBE-1578-41C1-9BF9-78D818740BE9}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
NuGet.config = NuGet.config
.nuget\NuGet.exe = .nuget\NuGet.exe .nuget\NuGet.exe = .nuget\NuGet.exe
EndProjectSection EndProjectSection
EndProject EndProject
@ -99,191 +100,130 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sonarr.Host.Test", "NzbDron
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86 Debug|x64 = Debug|x64
Mono|x86 = Mono|x86 Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.ActiveCfg = Debug|x86 {3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x64.ActiveCfg = Debug|x64
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.Build.0 = Debug|x86 {3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x64.Build.0 = Debug|x64
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Mono|x86.ActiveCfg = Release|x86 {3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x64.ActiveCfg = Release|x64
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Mono|x86.Build.0 = Release|x86 {3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x64.Build.0 = Release|x64
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.ActiveCfg = Release|x86 {FAFB5948-A222-4CF6-AD14-026BE7564802}.Debug|x64.ActiveCfg = Debug|x64
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.Build.0 = Release|x86 {FAFB5948-A222-4CF6-AD14-026BE7564802}.Debug|x64.Build.0 = Debug|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Debug|x86.ActiveCfg = Debug|x86 {FAFB5948-A222-4CF6-AD14-026BE7564802}.Release|x64.ActiveCfg = Release|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Debug|x86.Build.0 = Debug|x86 {FAFB5948-A222-4CF6-AD14-026BE7564802}.Release|x64.Build.0 = Release|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Mono|x86.ActiveCfg = Release|x86 {CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x64.ActiveCfg = Debug|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Mono|x86.Build.0 = Release|x86 {CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x64.Build.0 = Debug|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Release|x86.ActiveCfg = Release|x86 {CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|x64.ActiveCfg = Release|x64
{FAFB5948-A222-4CF6-AD14-026BE7564802}.Release|x86.Build.0 = Release|x86 {CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|x64.Build.0 = Release|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.ActiveCfg = Debug|x86 {193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.ActiveCfg = Debug|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Debug|x86.Build.0 = Debug|x86 {193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x64.Build.0 = Debug|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Mono|x86.ActiveCfg = Release|x86 {193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|x64.ActiveCfg = Release|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Mono|x86.Build.0 = Release|x86 {193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|x64.Build.0 = Release|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|x86.ActiveCfg = Release|x86 {35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Debug|x64.ActiveCfg = Debug|x64
{CADDFCE0-7509-4430-8364-2074E1EEFCA2}.Release|x86.Build.0 = Release|x86 {35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Debug|x64.Build.0 = Debug|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.ActiveCfg = Debug|x86 {35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Release|x64.ActiveCfg = Release|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Debug|x86.Build.0 = Debug|x86 {35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Release|x64.Build.0 = Release|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Mono|x86.ActiveCfg = Release|x86 {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x64.ActiveCfg = Debug|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Mono|x86.Build.0 = Release|x86 {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x64.Build.0 = Debug|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|x86.ActiveCfg = Release|x86 {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x64.ActiveCfg = Release|x64
{193ADD3B-792B-4173-8E4C-5A3F8F0237F0}.Release|x86.Build.0 = Release|x86 {BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x64.Build.0 = Release|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Debug|x86.ActiveCfg = Debug|x86 {D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Debug|x64.ActiveCfg = Debug|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Debug|x86.Build.0 = Debug|x86 {D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Debug|x64.Build.0 = Debug|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Mono|x86.ActiveCfg = Release|x86 {D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Release|x64.ActiveCfg = Release|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Mono|x86.Build.0 = Release|x86 {D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Release|x64.Build.0 = Release|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Release|x86.ActiveCfg = Release|x86 {CBF6B8B0-A015-413A-8C86-01238BB45770}.Debug|x64.ActiveCfg = Debug|x64
{35388E8E-0CDB-4A84-AD16-E4B6EFDA5D97}.Release|x86.Build.0 = Release|x86 {CBF6B8B0-A015-413A-8C86-01238BB45770}.Debug|x64.Build.0 = Debug|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.ActiveCfg = Debug|x86 {CBF6B8B0-A015-413A-8C86-01238BB45770}.Release|x64.ActiveCfg = Release|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Debug|x86.Build.0 = Debug|x86 {CBF6B8B0-A015-413A-8C86-01238BB45770}.Release|x64.Build.0 = Release|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Mono|x86.ActiveCfg = Release|x86 {8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Debug|x64.ActiveCfg = Debug|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Mono|x86.Build.0 = Release|x86 {8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Debug|x64.Build.0 = Debug|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x86.ActiveCfg = Release|x86 {8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Release|x64.ActiveCfg = Release|x64
{BEC74619-DDBB-4FBA-B517-D3E20AFC9997}.Release|x86.Build.0 = Release|x86 {8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Release|x64.Build.0 = Release|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Debug|x86.ActiveCfg = Debug|x86 {CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Debug|x64.ActiveCfg = Debug|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Debug|x86.Build.0 = Debug|x86 {CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Debug|x64.Build.0 = Debug|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Mono|x86.ActiveCfg = Release|x86 {CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Release|x64.ActiveCfg = Release|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Mono|x86.Build.0 = Release|x86 {CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Release|x64.Build.0 = Release|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Release|x86.ActiveCfg = Release|x86 {6BCE712F-846D-4846-9D1B-A66B858DA755}.Debug|x64.ActiveCfg = Debug|x64
{D18A5DEB-5102-4775-A1AF-B75DAAA8907B}.Release|x86.Build.0 = Release|x86 {6BCE712F-846D-4846-9D1B-A66B858DA755}.Debug|x64.Build.0 = Debug|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Debug|x86.ActiveCfg = Debug|x86 {6BCE712F-846D-4846-9D1B-A66B858DA755}.Release|x64.ActiveCfg = Release|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Debug|x86.Build.0 = Debug|x86 {6BCE712F-846D-4846-9D1B-A66B858DA755}.Release|x64.Build.0 = Release|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Mono|x86.ActiveCfg = Release|x86 {700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Debug|x64.ActiveCfg = Debug|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Mono|x86.Build.0 = Release|x86 {700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Debug|x64.Build.0 = Debug|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Release|x86.ActiveCfg = Release|x86 {700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Release|x64.ActiveCfg = Release|x64
{CBF6B8B0-A015-413A-8C86-01238BB45770}.Release|x86.Build.0 = Release|x86 {700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Release|x64.Build.0 = Release|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Debug|x86.ActiveCfg = Debug|x86 {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Debug|x64.ActiveCfg = Debug|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Debug|x86.Build.0 = Debug|x86 {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Debug|x64.Build.0 = Debug|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Mono|x86.ActiveCfg = Release|x86 {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|x64.ActiveCfg = Release|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Mono|x86.Build.0 = Release|x86 {FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|x64.Build.0 = Release|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Release|x86.ActiveCfg = Release|x86 {4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Debug|x64.ActiveCfg = Debug|x64
{8CEFECD0-A6C2-498F-98B1-3FBE5820F9AB}.Release|x86.Build.0 = Release|x86 {4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Debug|x64.Build.0 = Debug|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Debug|x86.ActiveCfg = Debug|x86 {4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Release|x64.ActiveCfg = Release|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Debug|x86.Build.0 = Debug|x86 {4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Release|x64.Build.0 = Release|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Mono|x86.ActiveCfg = Release|x86 {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x64.ActiveCfg = Debug|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Mono|x86.Build.0 = Release|x86 {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x64.Build.0 = Debug|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Release|x86.ActiveCfg = Release|x86 {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x64.ActiveCfg = Release|x64
{CC26800D-F67E-464B-88DE-8EB1A0C227A3}.Release|x86.Build.0 = Release|x86 {F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x64.Build.0 = Release|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Debug|x86.ActiveCfg = Debug|x86 {FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Debug|x64.ActiveCfg = Debug|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Debug|x86.Build.0 = Debug|x86 {FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Debug|x64.Build.0 = Debug|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Mono|x86.ActiveCfg = Release|x86 {FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Release|x64.ActiveCfg = Release|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Mono|x86.Build.0 = Release|x86 {FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Release|x64.Build.0 = Release|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Release|x86.ActiveCfg = Release|x86 {95C11A9E-56ED-456A-8447-2C89C1139266}.Debug|x64.ActiveCfg = Debug|x64
{6BCE712F-846D-4846-9D1B-A66B858DA755}.Release|x86.Build.0 = Release|x86 {95C11A9E-56ED-456A-8447-2C89C1139266}.Debug|x64.Build.0 = Debug|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Debug|x86.ActiveCfg = Debug|x86 {95C11A9E-56ED-456A-8447-2C89C1139266}.Release|x64.ActiveCfg = Release|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Debug|x86.Build.0 = Debug|x86 {95C11A9E-56ED-456A-8447-2C89C1139266}.Release|x64.Build.0 = Release|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Mono|x86.ActiveCfg = Release|x86 {D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x64.ActiveCfg = Debug|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Mono|x86.Build.0 = Release|x86 {D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x64.Build.0 = Debug|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Release|x86.ActiveCfg = Release|x86 {D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Release|x64.ActiveCfg = Release|x64
{700D0B95-95CD-43F3-B6C9-FAA0FC1358D4}.Release|x86.Build.0 = Release|x86 {D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Release|x64.Build.0 = Release|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Debug|x86.ActiveCfg = Debug|x86 {7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Debug|x64.ActiveCfg = Debug|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Debug|x86.Build.0 = Debug|x86 {7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Debug|x64.Build.0 = Debug|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Mono|x86.ActiveCfg = Release|x86 {7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Release|x64.ActiveCfg = Release|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Mono|x86.Build.0 = Release|x86 {7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Release|x64.Build.0 = Release|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|x86.ActiveCfg = Release|x86 {F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Debug|x64.ActiveCfg = Debug|x64
{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}.Release|x86.Build.0 = Release|x86 {F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Debug|x64.Build.0 = Debug|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Debug|x86.ActiveCfg = Debug|x86 {F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Release|x64.ActiveCfg = Release|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Debug|x86.Build.0 = Debug|x86 {F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Release|x64.Build.0 = Release|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Mono|x86.ActiveCfg = Release|x86 {15AD7579-A314-4626-B556-663F51D97CD1}.Debug|x64.ActiveCfg = Debug|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Mono|x86.Build.0 = Release|x86 {15AD7579-A314-4626-B556-663F51D97CD1}.Debug|x64.Build.0 = Debug|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Release|x86.ActiveCfg = Release|x86 {15AD7579-A314-4626-B556-663F51D97CD1}.Release|x64.ActiveCfg = Release|x64
{4CCC53CD-8D5E-4CC4-97D2-5C9312AC2BD7}.Release|x86.Build.0 = Release|x86 {15AD7579-A314-4626-B556-663F51D97CD1}.Release|x64.Build.0 = Release|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.ActiveCfg = Debug|x86 {911284D3-F130-459E-836C-2430B6FBF21D}.Debug|x64.ActiveCfg = Debug|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Debug|x86.Build.0 = Debug|x86 {911284D3-F130-459E-836C-2430B6FBF21D}.Debug|x64.Build.0 = Debug|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Mono|x86.ActiveCfg = Release|x86 {911284D3-F130-459E-836C-2430B6FBF21D}.Release|x64.ActiveCfg = Release|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Mono|x86.Build.0 = Release|x86 {911284D3-F130-459E-836C-2430B6FBF21D}.Release|x64.Build.0 = Release|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x86.ActiveCfg = Release|x86 {80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Debug|x64.ActiveCfg = Debug|x64
{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}.Release|x86.Build.0 = Release|x86 {80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Debug|x64.Build.0 = Debug|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Debug|x86.ActiveCfg = Debug|x86 {80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Release|x64.ActiveCfg = Release|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Debug|x86.Build.0 = Debug|x86 {80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Release|x64.Build.0 = Release|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Mono|x86.ActiveCfg = Release|x86 {40D72824-7D02-4A77-9106-8FE0EEA2B997}.Debug|x64.ActiveCfg = Debug|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Mono|x86.Build.0 = Release|x86 {40D72824-7D02-4A77-9106-8FE0EEA2B997}.Debug|x64.Build.0 = Debug|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Release|x86.ActiveCfg = Release|x86 {40D72824-7D02-4A77-9106-8FE0EEA2B997}.Release|x64.ActiveCfg = Release|x64
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Release|x86.Build.0 = Release|x86 {40D72824-7D02-4A77-9106-8FE0EEA2B997}.Release|x64.Build.0 = Release|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Debug|x86.ActiveCfg = Debug|x86 {411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Debug|x64.ActiveCfg = Debug|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Debug|x86.Build.0 = Debug|x86 {411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Debug|x64.Build.0 = Debug|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Mono|x86.ActiveCfg = Release|x86 {411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Release|x64.ActiveCfg = Release|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Mono|x86.Build.0 = Release|x86 {411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Release|x64.Build.0 = Release|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Release|x86.ActiveCfg = Release|x86 {90D6E9FC-7B88-4E1B-B018-8FA742274558}.Debug|x64.ActiveCfg = Debug|x64
{95C11A9E-56ED-456A-8447-2C89C1139266}.Release|x86.Build.0 = Release|x86 {90D6E9FC-7B88-4E1B-B018-8FA742274558}.Debug|x64.Build.0 = Debug|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.ActiveCfg = Debug|x86 {90D6E9FC-7B88-4E1B-B018-8FA742274558}.Release|x64.ActiveCfg = Release|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Debug|x86.Build.0 = Debug|x86 {90D6E9FC-7B88-4E1B-B018-8FA742274558}.Release|x64.Build.0 = Release|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Mono|x86.ActiveCfg = Release|x86 {9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Debug|x64.ActiveCfg = Debug|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Mono|x86.Build.0 = Release|x86 {9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Debug|x64.Build.0 = Debug|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Release|x86.ActiveCfg = Release|x86 {9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Release|x64.ActiveCfg = Release|x64
{D12F7F2F-8A3C-415F-88FA-6DD061A84869}.Release|x86.Build.0 = Release|x86 {9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Release|x64.Build.0 = Release|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Debug|x86.ActiveCfg = Debug|x86 {7140FF1F-79BE-492F-9188-B21A050BF708}.Debug|x64.ActiveCfg = Debug|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Debug|x86.Build.0 = Debug|x86 {7140FF1F-79BE-492F-9188-B21A050BF708}.Debug|x64.Build.0 = Debug|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Mono|x86.ActiveCfg = Release|x86 {7140FF1F-79BE-492F-9188-B21A050BF708}.Release|x64.ActiveCfg = Release|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Mono|x86.Build.0 = Release|x86 {7140FF1F-79BE-492F-9188-B21A050BF708}.Release|x64.Build.0 = Release|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Release|x86.ActiveCfg = Release|x86 {5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Debug|x64.ActiveCfg = Debug|x64
{7C2CC69F-5CA0-4E5C-85CB-983F9F6C3B36}.Release|x86.Build.0 = Release|x86 {5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Debug|x64.Build.0 = Debug|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Debug|x86.ActiveCfg = Debug|x86 {5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Release|x64.ActiveCfg = Release|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Debug|x86.Build.0 = Debug|x86 {5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Release|x64.Build.0 = Release|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Mono|x86.ActiveCfg = Release|x86 {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x64.ActiveCfg = Debug|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Mono|x86.Build.0 = Release|x86 {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x64.Build.0 = Debug|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Release|x86.ActiveCfg = Release|x86 {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|x64.ActiveCfg = Release|x64
{F6FC6BE7-0847-4817-A1ED-223DC647C3D7}.Release|x86.Build.0 = Release|x86 {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|x64.Build.0 = Release|x64
{15AD7579-A314-4626-B556-663F51D97CD1}.Debug|x86.ActiveCfg = Debug|x86
{15AD7579-A314-4626-B556-663F51D97CD1}.Debug|x86.Build.0 = Debug|x86
{15AD7579-A314-4626-B556-663F51D97CD1}.Mono|x86.ActiveCfg = Release|x86
{15AD7579-A314-4626-B556-663F51D97CD1}.Mono|x86.Build.0 = Release|x86
{15AD7579-A314-4626-B556-663F51D97CD1}.Release|x86.ActiveCfg = Release|x86
{15AD7579-A314-4626-B556-663F51D97CD1}.Release|x86.Build.0 = Release|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Debug|x86.ActiveCfg = Debug|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Debug|x86.Build.0 = Debug|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Mono|x86.ActiveCfg = Release|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Mono|x86.Build.0 = Release|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Release|x86.ActiveCfg = Release|x86
{911284D3-F130-459E-836C-2430B6FBF21D}.Release|x86.Build.0 = Release|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Debug|x86.ActiveCfg = Debug|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Debug|x86.Build.0 = Debug|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Mono|x86.ActiveCfg = Release|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Mono|x86.Build.0 = Release|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Release|x86.ActiveCfg = Release|x86
{80B51429-7A0E-46D6-BEE3-C80DCB1C4EAA}.Release|x86.Build.0 = Release|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Debug|x86.ActiveCfg = Debug|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Debug|x86.Build.0 = Debug|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Mono|x86.ActiveCfg = Release|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Mono|x86.Build.0 = Release|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Release|x86.ActiveCfg = Release|x86
{40D72824-7D02-4A77-9106-8FE0EEA2B997}.Release|x86.Build.0 = Release|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Debug|x86.ActiveCfg = Debug|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Debug|x86.Build.0 = Debug|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Mono|x86.ActiveCfg = Release|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Mono|x86.Build.0 = Release|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Release|x86.ActiveCfg = Release|x86
{411A9E0E-FDC6-4E25-828A-0C2CD1CD96F8}.Release|x86.Build.0 = Release|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Debug|x86.ActiveCfg = Debug|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Debug|x86.Build.0 = Debug|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Mono|x86.ActiveCfg = Release|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Mono|x86.Build.0 = Release|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Release|x86.ActiveCfg = Release|x86
{90D6E9FC-7B88-4E1B-B018-8FA742274558}.Release|x86.Build.0 = Release|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Debug|x86.ActiveCfg = Debug|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Debug|x86.Build.0 = Debug|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Mono|x86.ActiveCfg = Release|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Mono|x86.Build.0 = Release|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Release|x86.ActiveCfg = Release|x86
{9DC31DE3-79FF-47A8-96B4-6BA18F6BB1CB}.Release|x86.Build.0 = Release|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Debug|x86.ActiveCfg = Debug|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Debug|x86.Build.0 = Debug|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Mono|x86.ActiveCfg = Release|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Mono|x86.Build.0 = Release|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Release|x86.ActiveCfg = Release|x86
{7140FF1F-79BE-492F-9188-B21A050BF708}.Release|x86.Build.0 = Release|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Debug|x86.ActiveCfg = Debug|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Debug|x86.Build.0 = Debug|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Mono|x86.ActiveCfg = Release|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Mono|x86.Build.0 = Release|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Release|x86.ActiveCfg = Release|x86
{5370BFF7-1BD7-46BC-AF06-7D9EA5CDA1D6}.Release|x86.Build.0 = Release|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.ActiveCfg = Debug|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Debug|x86.Build.0 = Debug|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Mono|x86.ActiveCfg = Release|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Mono|x86.Build.0 = Release|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|x86.ActiveCfg = Release|x86
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5}.Release|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -317,8 +257,8 @@ Global
{C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5} = {57A04B72-8088-4F75-A582-1158CF8291F7} {C0EA1A40-91AD-4EEB-BD16-2DDDEBD20AE5} = {57A04B72-8088-4F75-A582-1158CF8291F7}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35;packages\Unity.2.1.505.2\lib\NET35
SolutionGuid = {2955716E-0882-41EC-935D-C95694C5C30F} SolutionGuid = {2955716E-0882-41EC-935D-C95694C5C30F}
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35;packages\Unity.2.1.505.2\lib\NET35
EndGlobalSection EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = NzbDrone.Console\NzbDrone.Console.csproj StartupItem = NzbDrone.Console\NzbDrone.Console.csproj

Binary file not shown.