diff --git a/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.Net481.csproj b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.Net481.csproj
new file mode 100644
index 0000000..016f089
--- /dev/null
+++ b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.Net481.csproj
@@ -0,0 +1,119 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}
+ WinExe
+ Novetus.Bootstrapper
+ NovetusBootstrapper
+ v4.8.1
+ 512
+ false
+
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ TRACE;DEBUG;BASICLAUNCHER;NOVETUS_APPS;NET481
+ prompt
+ 4
+ false
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE;BASICLAUNCHER;NOVETUS_APPS;NET481
+ prompt
+ 4
+ false
+
+
+ NovetusIcon.ico
+
+
+ app.manifest
+
+
+
+ ..\packages\NLog.5.0.5\lib\net35\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ NovetusLaunchForm.cs
+
+
+
+
+ NovetusLaunchForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+ True
+
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
+
+ SET path=$(SolutionDir)build
+if not exist "%25path%25" mkdir "%25path%25"
+copy $(ProjectDir)$(OutDir) "%25path%25"\*
+del "%25path%25"\$(TargetName).vshost.exe
+del "%25path%25"\$(TargetName).vshost.exe.config
+del "%25path%25"\$(TargetName).vshost.exe.manifest
+del "%25path%25"\$(TargetName).xml
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj
index e1b12d8..95d5a23 100644
--- a/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj
+++ b/Novetus/Novetus.Bootstrapper/Novetus.Bootstrapper.csproj
@@ -18,7 +18,7 @@
full
false
bin\Debug\
- TRACE;DEBUG;BASICLAUNCHER;NOVETUS_APPS
+ TRACE;DEBUG;BASICLAUNCHER;NOVETUS_APPS;NET4
prompt
4
diff --git a/Novetus/Novetus.Bootstrapper/Properties/Resources.Designer.cs b/Novetus/Novetus.Bootstrapper/Properties/Resources.Designer.cs
index adeffeb..1b1338f 100644
--- a/Novetus/Novetus.Bootstrapper/Properties/Resources.Designer.cs
+++ b/Novetus/Novetus.Bootstrapper/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace Novetus.Bootstrapper.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
diff --git a/Novetus/Novetus.Bootstrapper/Properties/Settings.Designer.cs b/Novetus/Novetus.Bootstrapper/Properties/Settings.Designer.cs
index 9d6e5ca..f579b53 100644
--- a/Novetus/Novetus.Bootstrapper/Properties/Settings.Designer.cs
+++ b/Novetus/Novetus.Bootstrapper/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace Novetus.Bootstrapper.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/Novetus/Novetus.Bootstrapper/app.config b/Novetus/Novetus.Bootstrapper/app.config
new file mode 100644
index 0000000..eca069e
--- /dev/null
+++ b/Novetus/Novetus.Bootstrapper/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.Net481.csproj b/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.Net481.csproj
new file mode 100644
index 0000000..f289c5f
--- /dev/null
+++ b/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.Net481.csproj
@@ -0,0 +1,109 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}
+ WinExe
+ Novetus.ClientScriptTester
+ ClientScriptTester
+ v4.0
+ 512
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ TRACE;DEBUG;TESTER;NOVETUS_APPS;NET481
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE;TESTER;NOVETUS_APPS;NET481
+ prompt
+ 4
+
+
+ NovetusIcon.ico
+
+
+ app.manifest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ ClientScriptTestForm.cs
+
+
+
+
+ ClientScriptTestForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+ SET path=$(SolutionDir)build
+if not exist "%25path%25" mkdir "%25path%25"
+SET path2=%25path%25\ClientScriptTester
+if not exist "%25path2%25" mkdir "%25path2%25"
+copy $(ProjectDir)$(OutDir) "%25path2%25"\*
+del "%25path%25"\$(TargetName).vshost.exe
+del "%25path%25"\$(TargetName).vshost.exe.config
+del "%25path%25"\$(TargetName).vshost.exe.manifest
+del "%25path%25"\$(TargetName).xml
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.csproj b/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.csproj
index 778216c..43718c9 100644
--- a/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.csproj
+++ b/Novetus/Novetus.ClientScriptTester/Novetus.ClientScriptTester.csproj
@@ -26,7 +26,7 @@
pdbonly
true
bin\Release\
- TRACE
+ TRACE;TESTER;NOVETUS_APPS;NET4
prompt
4
diff --git a/Novetus/Novetus.Net481.sln b/Novetus/Novetus.Net481.sln
new file mode 100644
index 0000000..f0d9c9e
--- /dev/null
+++ b/Novetus/Novetus.Net481.sln
@@ -0,0 +1,45 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32630.192
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Novetus.Core", "NovetusCore\Novetus.Core.shproj", "{DEBCC57D-9A3B-4D7C-8693-FA4AEC56C8C1}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.Bootstrapper.Net481", "G:\Projects\GitHub\Novetus\Novetus_src\Novetus\Novetus.Bootstrapper\Novetus.Bootstrapper.Net481.csproj", "{8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.Launcher.Net481", "G:\Projects\GitHub\Novetus\Novetus_src\Novetus\NovetusLauncher\Novetus.Launcher.Net481.csproj", "{78EE2921-681F-411A-90F2-773A5CE96B7E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.URI.Net481", "G:\Projects\GitHub\Novetus\Novetus_src\Novetus\NovetusURI\Novetus.URI.Net481.csproj", "{917B30DE-F2C0-4955-B3B9-5BF90C3D01E9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8D030E72-BBF0-42E2-9DFB-C29E9E2A7E80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {78EE2921-681F-411A-90F2-773A5CE96B7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {78EE2921-681F-411A-90F2-773A5CE96B7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {78EE2921-681F-411A-90F2-773A5CE96B7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {78EE2921-681F-411A-90F2-773A5CE96B7E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {917B30DE-F2C0-4955-B3B9-5BF90C3D01E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {917B30DE-F2C0-4955-B3B9-5BF90C3D01E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {917B30DE-F2C0-4955-B3B9-5BF90C3D01E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {917B30DE-F2C0-4955-B3B9-5BF90C3D01E9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {66CA6CE5-670E-48AA-A2DA-9347371D4CA0}
+ EndGlobalSection
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ G:\Projects\GitHub\Novetus\Novetus_src\Novetus\NovetusCore\NovetusCore.projitems*{78ee2921-681f-411a-90f2-773a5ce96b7e}*SharedItemsImports = 4
+ G:\Projects\GitHub\Novetus\Novetus_src\Novetus\NovetusCore\NovetusCore.projitems*{8d030e72-bbf0-42e2-9dfb-c29e9e2a7e80}*SharedItemsImports = 4
+ G:\Projects\GitHub\Novetus\Novetus_src\Novetus\NovetusCore\NovetusCore.projitems*{917b30de-f2c0-4955-b3b9-5bf90c3d01e9}*SharedItemsImports = 4
+ NovetusCore\NovetusCore.projitems*{debcc57d-9a3b-4d7c-8693-fa4aec56c8c1}*SharedItemsImports = 13
+ EndGlobalSection
+EndGlobal
diff --git a/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.Net481.csproj b/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.Net481.csproj
new file mode 100644
index 0000000..ff4481a
--- /dev/null
+++ b/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.Net481.csproj
@@ -0,0 +1,70 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {64A99062-3C1C-4D2E-99E4-D6D92443AC98}
+ Exe
+ Novetus.ReleasePreparer
+ ReleasePreparer
+ v4.0
+ 512
+ false
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ TRACE;DEBUG;PREPARER;NET481
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE;PREPARER;NET481
+ prompt
+ 4
+
+
+ NovetusIcon.ico
+
+
+
+
+
+
+
+
+
+
+
+
+ INIFile.cs
+
+
+
+
+
+
+
+
+
+ SET path=$(SolutionDir)build
+if not exist "%25path%25" mkdir "%25path%25"
+copy $(ProjectDir)$(OutDir) "%25path%25"\*
+del "%25path%25"\$(TargetName).vshost.exe
+del "%25path%25"\$(TargetName).vshost.exe.config
+del "%25path%25"\$(TargetName).vshost.exe.manifest
+del "%25path%25"\$(TargetName).xml
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.csproj b/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.csproj
index 4a6b59d..96a5651 100644
--- a/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.csproj
+++ b/Novetus/Novetus.ReleasePreparer/Novetus.ReleasePreparer.csproj
@@ -27,7 +27,7 @@
pdbonly
true
bin\Release\
- TRACE;PREPARER
+ TRACE;PREPARER;NET4
prompt
4
diff --git a/Novetus/Novetus.Tools.Net481.sln b/Novetus/Novetus.Tools.Net481.sln
new file mode 100644
index 0000000..ffc0ea5
--- /dev/null
+++ b/Novetus/Novetus.Tools.Net481.sln
@@ -0,0 +1,43 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32630.192
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.ClientScriptTester", "Novetus.ClientScriptTester\Novetus.ClientScriptTester.csproj", "{83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novetus.ReleasePreparer", "Novetus.ReleasePreparer\Novetus.ReleasePreparer.csproj", "{64A99062-3C1C-4D2E-99E4-D6D92443AC98}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F92FFBED-2767-4676-9711-BB89CDA58A43}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F92FFBED-2767-4676-9711-BB89CDA58A43}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2070EAA6-7606-4006-A628-5705C24A3644}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2070EAA6-7606-4006-A628-5705C24A3644}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2070EAA6-7606-4006-A628-5705C24A3644}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2070EAA6-7606-4006-A628-5705C24A3644}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83B08607-65B8-4F9C-8D0F-AB1C8EEFFAE0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {64A99062-3C1C-4D2E-99E4-D6D92443AC98}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D7B467EE-A4B9-42FB-AA83-F487DA0F5CB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D7B467EE-A4B9-42FB-AA83-F487DA0F5CB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D7B467EE-A4B9-42FB-AA83-F487DA0F5CB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D7B467EE-A4B9-42FB-AA83-F487DA0F5CB1}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {66CA6CE5-670E-48AA-A2DA-9347371D4CA0}
+ EndGlobalSection
+EndGlobal
diff --git a/Novetus/NovetusCore/StorageAndFunctions/Util.cs b/Novetus/NovetusCore/StorageAndFunctions/Util.cs
index dbc514c..693bb1d 100644
--- a/Novetus/NovetusCore/StorageAndFunctions/Util.cs
+++ b/Novetus/NovetusCore/StorageAndFunctions/Util.cs
@@ -562,7 +562,7 @@ public static class Util
var tcs = new TaskCompletionSource