From 286b039a87f48d4038a92167e23a69f34c1f3c37 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Wed, 9 Aug 2017 10:02:38 +0200
Subject: [PATCH] adding deployment configuration; move packaging ZIP file to
 MSBuild (separate build file with additional targets)

---
 Build/Packaging.targets                       | 120 ++++++++++++++++
 Documentation/User Manual/convert.bat         |   2 +-
 HashingCmd/HashingCmd.csproj                  |  10 ++
 HashingTool/HashingTool.csproj                |  10 ++
 .../DeclarationCycleZip.csproj                |  10 ++
 Tools/GraphDrawer/GraphDrawer.csproj          |  10 ++
 Tools/LicenceHeader/LicenceHeader.csproj      |  10 ++
 .../VectoLegacyTests/VectoLegacyTests.csproj  |   9 ++
 VECTO.sln                                     |  84 +++++++++++
 VECTO/VECTO.vbproj                            |  25 ++++
 .../VectoAuxiliaries/VectoAuxiliaries.vbproj  |  12 +-
 .../VectoAuxiliariesTests.vbproj              |   9 ++
 .../AdvancedAuxiliaryInterfaces.vbproj        |  12 +-
 VectoCommon/VectoCommon/VectoCommon.csproj    |   8 ++
 VectoCommon/VectoHashing/VectoHashing.csproj  |   9 ++
 .../VectoHashingTest/VectoHashingTest.csproj  |   9 ++
 VectoConsole/VectoConsole.csproj              |  10 ++
 .../ModelbasedTests/ModelbasedTests.csproj    |   8 ++
 VectoCore/VectoCore/VectoCore.csproj          |  10 +-
 .../VectoCoreTest/Dummy/EngineFLDTest.cs      | 134 +++++++++---------
 VectoCore/VectoCoreTest/VectoCoreTest.csproj  |   8 ++
 21 files changed, 448 insertions(+), 71 deletions(-)
 create mode 100644 Build/Packaging.targets

diff --git a/Build/Packaging.targets b/Build/Packaging.targets
new file mode 100644
index 0000000000..9c5544335d
--- /dev/null
+++ b/Build/Packaging.targets
@@ -0,0 +1,120 @@
+<Project DefaultTargets = "Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
+  <PropertyGroup>
+	<CleanDependsOn>
+		$(CleanDependsOn)
+		CleanVectoDeploy
+	</CleanDependsOn>
+  </PropertyGroup>
+  
+    <UsingTask TaskName="Zip" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
+  <ParameterGroup>
+    <OutputFilename ParameterType="System.String" Required="true" />
+    <Files ParameterType="Microsoft.Build.Framework.ITaskItem[]" Required="true" />
+	<SourcePath ParameterType="System.String" Required="true"/>
+	<DestinationPath ParameterType="System.String" Required="true"/>
+  </ParameterGroup>
+  <Task>
+    <Reference Include="System.IO.Compression" />
+    <Using Namespace="System.IO.Compression" />
+    <Code Type="Fragment" Language="cs">
+    <![CDATA[
+      try
+      {
+        using (Stream zipStream = new FileStream(Path.GetFullPath(OutputFilename), FileMode.Create, FileAccess.Write))
+        using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Create))
+        {
+            foreach (ITaskItem fileItem in Files)
+            {
+                string filename = fileItem.ItemSpec;
+                using (Stream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
+				using (Stream fileStreamInZip = archive.CreateEntry(fileItem.ItemSpec.Replace(SourcePath, DestinationPath)).Open())
+                    fileStream.CopyTo(fileStreamInZip);
+            }
+        }
+        return true;
+      }
+      catch (Exception ex)
+      {
+        Log.LogErrorFromException(ex);
+        return false;
+      }
+    ]]>
+    </Code>
+  </Task>
+</UsingTask>
+
+<Target Name="GenerateReleasenotesPDF" BeforeTargets="AfterBuild">  
+	<Exec Command="cscript &quot;$(solutiondir)documentation\user manual source\convertpptxtopdf.vbs&quot; &quot;$(solutiondir)documentation\user manual source\release notes vecto3.x.pptx&quot; &quot;$(solutiondir)documentation\user manual source\release notes vecto3.x.pdf&quot;"/>  
+</Target>  
+<Target Name="GenerateHelpHTML" BeforeTargets="AfterBuild">  
+	<Exec Command="&quot;$(solutiondir)documentation\user manual\convert.bat&quot;" WorkingDirectory="$(solutiondir)documentation\user manual"/>  
+</Target>  
+
+<Target Name="BeforeBuild" Condition="$(Configuration) == 'Deploy' OR $(Configuration) == 'Release'">
+	<ItemGroup>
+		<VersionTemplates Include="$(SolutionDir)**\Version.tt"/>
+	</ItemGroup>
+	<Exec Command="&quot;%CommonProgramFiles(x86)%\Microsoft Shared\TextTemplating\12.0\TextTransform.exe&quot; &quot;%(VersionTemplates.Identity)&quot;"/>
+</Target>
+
+<Target Name="AfterBuild" Condition="$(Configuration) == 'Deploy'">
+	<ItemGroup>  
+		<VectoCoreAssembly Include="$(OutputPath)VectoCore.dll" />  
+
+		<GenericVehicles Include="$(SolutionDir)\Generic Vehicles\**\*.*" Exclude="$(SolutionDir)\**\*.vmod;$(SolutionDir)\**\*.vsum;$(SolutionDir)\**\*RSLT_*.xml"/>
+		<MissionProfiles Include="$(SolutionDir)\VectoCore\VectoCore\Resources\Declaration\MissionCycles\**\*.*"/>
+		<DeclarationData Include="$(SolutionDir)\VectoCore\VectoCore\Resources\Declaration\**/*.csv" Exclude="$(SolutionDir)\**\MissionCycles\**\*.*"/>
+		<DeclarationData Include="$(SolutionDir)\VectoCore\VectoCore\Resources\Declaration\**/*.vacc" Exclude="$(SolutionDir)\**\MissionCycles\**\*.*"/>
+		<VectoXSD Include="$(SolutionDir)\VectoCore\VectoCore\Resources\XSD\**\*.*" Exclude="$(SolutionDir)\**\*Engineering*"/>
+		<VectoXMLExamples Include="$(SolutionDir)\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\*-sample.xml"/>
+		<UserManual Include="$(SolutionDir)Documentation\User Manual\help.html"/>
+		<UserManual Include="$(SolutionDir)Documentation\XML\*.pdf"/>
+		<UserManual Include="$(SolutionDir)Documentation\XML\VectoParameters.html"/>
+		<UserManual Include="$(SolutionDir)Documentation\User Manual Source\JIRA Quick Start Guide.pdf"/>
+		<UserManual Include="$(SolutionDir)Documentation\Cdv_Generator_VECTO3.2.xlsx"/>
+		<ReleaseNotes Include="$(SolutionDir)Documentation\User Manual Source\Release Notes Vecto3.x.pdf"/>
+	</ItemGroup>
+	
+	<Copy SourceFiles="@(GenericVehicles)" DestinationFiles="@(GenericVehicles->'$(OutputPath)\Generic Vehicles\%(RecursiveDir)%(Filename)%(Extension)')" />
+	<Copy SourceFiles="@(DeclarationData)" DestinationFolder="$(OutputPath)\Declaration" />
+	<Copy SourceFiles="@(MissionProfiles)" DestinationFolder="$(OutputPath)\Mission Profiles" />
+	<Copy SourceFiles="@(VectoXMLExamples)" DestinationFolder="$(OutputPath)\XML\Examples" />
+	<Copy SourceFiles="@(VectoXSD)" DestinationFolder="$(OutputPath)\XML\XSD" />
+	<Copy SourceFiles="@(UserManual)" DestinationFolder="$(OutputPath)\User Manual" />
+	<Copy SourceFiles="@(ReleaseNotes)" DestinationFiles="$(OutputPath)\User Manual\Release Notes.pdf" />
+	<Copy SourceFiles="$(SolutionDir)\Documentation\User Manual Source\README for Mission Profiles Directory.txt" DestinationFiles="$(OutputPath)\Mission Profiles\!! README !!.TXT"/>
+	<Copy SourceFiles="$(SolutionDir)\Documentation\User Manual Source\README for Declaration Directory.txt" DestinationFiles="$(OutputPath)\Declaration\!! README !!.TXT"/>
+	<ItemGroup>
+		<ZipFiles Include="$(OutputPath)Declaration\**\*.*" />
+		<ZipFiles Include="$(OutputPath)Generic Vehicles\**\*.*" />
+		<ZipFiles Include="$(OutputPath)Mission Profiles\**\*.*" />
+		<ZipFiles Include="$(OutputPath)User Manual\**\*.*" />
+		<ZipFiles Include="$(OutputPath)XML\**\*.*" />
+	</ItemGroup>
+
+	<GetAssemblyIdentity  AssemblyFiles="@(VectoCoreAssembly)">
+		<Output  TaskParameter="Assemblies"  ItemName="VectoAssemblyIdentities"  />
+	</GetAssemblyIdentity>
+	<ItemGroup>
+		<ZipFiles Include="$(OutputPath)*.dll" />
+		<ZipFiles Include="$(OutputPath)VECTO.exe*" />
+	</ItemGroup>
+	<Zip OutputFilename="$(OutputPath)Vecto_%(VectoAssemblyIdentities.Version).zip" Files="@(ZipFiles)" SourcePath="$(OutputPath)" DestinationPath="VECTO_%(VectoAssemblyIdentities.Version)\"/>
+</Target>
+
+<Target Name="CleanVectoDeploy" Condition="$(Configuration) == 'Deploy'">
+	<ItemGroup>
+		<CustomFilesToClean Include="$(OutputPath)Declaration\**\*.*" />
+		<CustomFilesToClean Include="$(OutputPath)Generic Vehicles\**\*.*" />
+		<CustomFilesToClean Include="$(OutputPath)Mission Profiles\**\*.*" />
+		<CustomFilesToClean Include="$(OutputPath)User Manual\**\*.*" />
+		<CustomFilesToClean Include="$(OutputPath)XML\**\*.*" />
+		<CustomFoldersToClean Include="%(CustomFilesToClean.RootDir)%(CustomFilesToClean.Directory)"/>
+	</ItemGroup>
+	<Message Text="@(CustomFilesToClean)" Importance="normal"/>
+	<Message Text="@(CustomFoldersToClean)" Importance="normal"/>
+	<Delete Files="@CustomFilesToClean"/>
+	<RemoveDir Directories="@(CustomFoldersToClean)"/>
+</Target>
+
+</Project>
\ No newline at end of file
diff --git a/Documentation/User Manual/convert.bat b/Documentation/User Manual/convert.bat
index c80082457f..20a74b750c 100644
--- a/Documentation/User Manual/convert.bat	
+++ b/Documentation/User Manual/convert.bat	
@@ -9,7 +9,7 @@ for /f %%f in (files.txt) do set LIST=!LIST! "%%f"
 
 
 REM pandoc --verbose  -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --mathjax=includes/mathjax.js -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
-pandoc --verbose  -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
+%LOCALAPPDATA%\Pandoc\pandoc --verbose  -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
 
 REM pandoc %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex  -c includes/style.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
 REM pandoc %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex="https://latex.codecogs.com/svg.latex?\large "  -c includes/style.css -B includes/header.html -A includes/footer.html -o help.html  -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js
diff --git a/HashingCmd/HashingCmd.csproj b/HashingCmd/HashingCmd.csproj
index 7ee07480a1..948021e5da 100644
--- a/HashingCmd/HashingCmd.csproj
+++ b/HashingCmd/HashingCmd.csproj
@@ -31,6 +31,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
diff --git a/HashingTool/HashingTool.csproj b/HashingTool/HashingTool.csproj
index 7fd102e465..903b0ee04f 100644
--- a/HashingTool/HashingTool.csproj
+++ b/HashingTool/HashingTool.csproj
@@ -33,6 +33,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Data" />
diff --git a/Tools/DeclarationCycleZip/DeclarationCycleZip.csproj b/Tools/DeclarationCycleZip/DeclarationCycleZip.csproj
index 4df223386e..5fda6467dc 100644
--- a/Tools/DeclarationCycleZip/DeclarationCycleZip.csproj
+++ b/Tools/DeclarationCycleZip/DeclarationCycleZip.csproj
@@ -31,6 +31,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
diff --git a/Tools/GraphDrawer/GraphDrawer.csproj b/Tools/GraphDrawer/GraphDrawer.csproj
index 40d271830e..f073af8706 100644
--- a/Tools/GraphDrawer/GraphDrawer.csproj
+++ b/Tools/GraphDrawer/GraphDrawer.csproj
@@ -31,6 +31,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
diff --git a/Tools/LicenceHeader/LicenceHeader.csproj b/Tools/LicenceHeader/LicenceHeader.csproj
index 40898d4d35..86642c0757 100644
--- a/Tools/LicenceHeader/LicenceHeader.csproj
+++ b/Tools/LicenceHeader/LicenceHeader.csproj
@@ -31,6 +31,16 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
diff --git a/Tools/VectoLegacyTests/VectoLegacyTests.csproj b/Tools/VectoLegacyTests/VectoLegacyTests.csproj
index 219ddd1c5c..29c9305744 100644
--- a/Tools/VectoLegacyTests/VectoLegacyTests.csproj
+++ b/Tools/VectoLegacyTests/VectoLegacyTests.csproj
@@ -34,6 +34,15 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
   </ItemGroup>
diff --git a/VECTO.sln b/VECTO.sln
index f30c289326..985ef612b0 100644
--- a/VECTO.sln
+++ b/VECTO.sln
@@ -75,6 +75,9 @@ Global
 		Debug|Any CPU = Debug|Any CPU
 		Debug|x64 = Debug|x64
 		Debug|x86 = Debug|x86
+		Deploy|Any CPU = Deploy|Any CPU
+		Deploy|x64 = Deploy|x64
+		Deploy|x86 = Deploy|x86
 		Release|Any CPU = Release|Any CPU
 		Release|x64 = Release|x64
 		Release|x86 = Release|x86
@@ -95,6 +98,11 @@ Global
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Debug|x86.ActiveCfg = Debug|x86
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Debug|x86.Build.0 = Debug|x86
+		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Deploy|x86.ActiveCfg = Deploy|x86
+		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Deploy|x86.Build.0 = Deploy|x86
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Release|Any CPU.Build.0 = Release|Any CPU
 		{AAC0F132-0A9F-45B3-B682-77AC9B24B352}.Release|x64.ActiveCfg = Release|Any CPU
@@ -110,6 +118,10 @@ Global
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Release|Any CPU.Build.0 = Release|Any CPU
 		{FDEEE460-0B8A-4EF6-8D9E-72F203A50F65}.Release|x64.ActiveCfg = Release|Any CPU
@@ -126,6 +138,10 @@ Global
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Release|Any CPU.Build.0 = Release|Any CPU
 		{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}.Release|x64.ActiveCfg = Release|Any CPU
@@ -140,6 +156,9 @@ Global
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6F31F8B2-6AB3-4F85-8AC9-D09ADCA6432D}.Release|x64.ActiveCfg = Release|Any CPU
@@ -156,6 +175,9 @@ Global
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}.Release|x64.ActiveCfg = Release|Any CPU
@@ -169,6 +191,9 @@ Global
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Deploy|Any CPU.ActiveCfg = Debug|Any CPU
+		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Deploy|x64.ActiveCfg = Debug|Any CPU
+		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Deploy|x86.ActiveCfg = Debug|Any CPU
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Release|x64.ActiveCfg = Release|Any CPU
 		{E23B3A9B-62E7-4476-849E-EEF1C3804A2F}.Release|x86.ActiveCfg = Release|Any CPU
@@ -182,6 +207,10 @@ Global
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Release|Any CPU.Build.0 = Release|Any CPU
 		{B4B9BD2F-FD8F-4BB8-82FA-E2154D2C7FBD}.Release|x64.ActiveCfg = Release|Any CPU
@@ -198,6 +227,10 @@ Global
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Release|Any CPU.Build.0 = Release|Any CPU
 		{60AD4DF0-6648-4374-83CB-C7A162EFB391}.Release|x64.ActiveCfg = Release|Any CPU
@@ -214,6 +247,9 @@ Global
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Release|Any CPU.Build.0 = Release|Any CPU
 		{6589CAEC-ECC9-4BCC-9699-DE3F22BBCBD4}.Release|x64.ActiveCfg = Release|Any CPU
@@ -230,6 +266,9 @@ Global
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Release|Any CPU.Build.0 = Release|Any CPU
 		{2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6}.Release|x64.ActiveCfg = Release|Any CPU
@@ -246,6 +285,9 @@ Global
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E8B0B447-1A54-4BEC-A160-AF0017000781}.Release|x64.ActiveCfg = Release|Any CPU
@@ -260,6 +302,10 @@ Global
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Release|Any CPU.Build.0 = Release|Any CPU
 		{79A066AD-69A9-4223-90F6-6ED5D2D084F4}.Release|x64.ActiveCfg = Release|Any CPU
@@ -274,6 +320,9 @@ Global
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Release|Any CPU.Build.0 = Release|Any CPU
 		{A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.Release|x64.ActiveCfg = Release|Any CPU
@@ -288,6 +337,9 @@ Global
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{49F0275A-4517-49FA-859E-77279B9C8B18}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{49F0275A-4517-49FA-859E-77279B9C8B18}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{49F0275A-4517-49FA-859E-77279B9C8B18}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Release|Any CPU.Build.0 = Release|Any CPU
 		{49F0275A-4517-49FA-859E-77279B9C8B18}.Release|x64.ActiveCfg = Release|Any CPU
@@ -302,6 +354,10 @@ Global
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|Any CPU.Build.0 = Release|Any CPU
 		{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|x64.ActiveCfg = Release|Any CPU
@@ -316,6 +372,9 @@ Global
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|Any CPU.Build.0 = Release|Any CPU
 		{D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|x64.ActiveCfg = Release|Any CPU
@@ -330,6 +389,9 @@ Global
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Release|Any CPU.Build.0 = Release|Any CPU
 		{41314A40-AB3E-4F43-B1A4-58443F4014F2}.Release|x64.ActiveCfg = Release|Any CPU
@@ -344,6 +406,9 @@ Global
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{749F150A-F974-46DC-A1E2-F4153C54FC0D}.Release|x64.ActiveCfg = Release|Any CPU
@@ -358,6 +423,9 @@ Global
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Release|Any CPU.Build.0 = Release|Any CPU
 		{2C58BA97-2954-4D19-920F-A24B78FC80A4}.Release|x64.ActiveCfg = Release|Any CPU
@@ -372,6 +440,9 @@ Global
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Release|Any CPU.Build.0 = Release|Any CPU
 		{7C364099-9B85-473A-8A42-BBEBE4798FF5}.Release|x64.ActiveCfg = Release|Any CPU
@@ -386,6 +457,10 @@ Global
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Deploy|Any CPU.Build.0 = Deploy|Any CPU
+		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Release|Any CPU.Build.0 = Release|Any CPU
 		{B673E12F-D323-4C4C-8805-9915B2C72D3D}.Release|x64.ActiveCfg = Release|Any CPU
@@ -400,6 +475,9 @@ Global
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Release|Any CPU.Build.0 = Release|Any CPU
 		{760C1C5B-A767-463E-BA85-F0BCFC23A550}.Release|x64.ActiveCfg = Release|Any CPU
@@ -414,6 +492,9 @@ Global
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Release|Any CPU.Build.0 = Release|Any CPU
 		{E14FC935-30EA-4BE6-AA8A-85CB76FEBA6A}.Release|x64.ActiveCfg = Release|Any CPU
@@ -428,6 +509,9 @@ Global
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Debug|x64.ActiveCfg = Debug|Any CPU
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{33F9848E-9257-4BE2-915F-68E748AEB204}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU
+		{33F9848E-9257-4BE2-915F-68E748AEB204}.Deploy|x64.ActiveCfg = Deploy|Any CPU
+		{33F9848E-9257-4BE2-915F-68E748AEB204}.Deploy|x86.ActiveCfg = Deploy|Any CPU
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Release|Any CPU.Build.0 = Release|Any CPU
 		{33F9848E-9257-4BE2-915F-68E748AEB204}.Release|x64.ActiveCfg = Release|Any CPU
diff --git a/VECTO/VECTO.vbproj b/VECTO/VECTO.vbproj
index 3f965fcd2d..4db0186bc0 100644
--- a/VECTO/VECTO.vbproj
+++ b/VECTO/VECTO.vbproj
@@ -130,6 +130,28 @@
   <PropertyGroup>
     <OptionStrict>On</OptionStrict>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DocumentationFile>VECTO.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <WarningLevel>1</WarningLevel>
+    <DebugType>None</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|x86'">
+    <DefineTrace>true</DefineTrace>
+    <OutputPath>bin\x86\Deploy\</OutputPath>
+    <DocumentationFile>VECTO.xml</DocumentationFile>
+    <WarningLevel>1</WarningLevel>
+    <DebugType>None</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
+    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Microsoft.Build.Framework" />
     <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
@@ -525,4 +547,7 @@
   <Target Name="AfterBuild">
   </Target>
   -->
+  
+	<Import Project="$(SolutionDir)Build\Packaging.targets"/>
+  
 </Project>
\ No newline at end of file
diff --git a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
index 5cefae0c96..1b0669f034 100644
--- a/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
+++ b/VECTOAux/VectoAuxiliaries/VectoAuxiliaries.vbproj
@@ -57,6 +57,16 @@
   <PropertyGroup>
     <OptionInfer>Off</OptionInfer>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <DefineTrace>true</DefineTrace>
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DocumentationFile>BusAuxiliaries.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -300,7 +310,7 @@
       <Name>AdvancedAuxiliaryInterfaces</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\VectoCommon\VectoCommon\VectoCommon.csproj">
-      <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project>
+      <Project>{79A066AD-69A9-4223-90F6-6ED5D2D084F4}</Project>
       <Name>VectoCommon</Name>
     </ProjectReference>
   </ItemGroup>
diff --git a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
index 2d4069494e..c9273bbf43 100644
--- a/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
+++ b/VECTOAux/VectoAuxiliariesTests/VectoAuxiliariesTests.vbproj
@@ -58,6 +58,15 @@
   <PropertyGroup>
     <OptionInfer>On</OptionInfer>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DocumentationFile>VectoAuxiliariesTests.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
diff --git a/VectoCommon/AdvancedAuxiliaryInterfaces/AdvancedAuxiliaryInterfaces.vbproj b/VectoCommon/AdvancedAuxiliaryInterfaces/AdvancedAuxiliaryInterfaces.vbproj
index 4195ff47a5..a6eb9991a4 100644
--- a/VectoCommon/AdvancedAuxiliaryInterfaces/AdvancedAuxiliaryInterfaces.vbproj
+++ b/VectoCommon/AdvancedAuxiliaryInterfaces/AdvancedAuxiliaryInterfaces.vbproj
@@ -53,6 +53,16 @@
   <PropertyGroup>
     <OptionInfer>On</OptionInfer>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <DefineTrace>true</DefineTrace>
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DocumentationFile>AdvancedAuxiliaryInterfaces.xml</DocumentationFile>
+    <Optimize>true</Optimize>
+    <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -123,7 +133,7 @@
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\VectoCommon\VectoCommon.csproj">
-      <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project>
+      <Project>{79A066AD-69A9-4223-90F6-6ED5D2D084F4}</Project>
       <Name>VectoCommon</Name>
     </ProjectReference>
   </ItemGroup>
diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj
index 32996b2b50..54c52e051b 100644
--- a/VectoCommon/VectoCommon/VectoCommon.csproj
+++ b/VectoCommon/VectoCommon/VectoCommon.csproj
@@ -30,6 +30,14 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="NLog">
       <HintPath>..\..\packages\NLog.4.2.3\lib\net45\NLog.dll</HintPath>
diff --git a/VectoCommon/VectoHashing/VectoHashing.csproj b/VectoCommon/VectoHashing/VectoHashing.csproj
index 965dbb5057..8ac7aaffad 100644
--- a/VectoCommon/VectoHashing/VectoHashing.csproj
+++ b/VectoCommon/VectoHashing/VectoHashing.csproj
@@ -29,6 +29,15 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
     <Reference Include="System.Core" />
diff --git a/VectoCommon/VectoHashingTest/VectoHashingTest.csproj b/VectoCommon/VectoHashingTest/VectoHashingTest.csproj
index b6a36b9a24..543f5b7bef 100644
--- a/VectoCommon/VectoHashingTest/VectoHashingTest.csproj
+++ b/VectoCommon/VectoHashingTest/VectoHashingTest.csproj
@@ -34,6 +34,15 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework">
       <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
diff --git a/VectoConsole/VectoConsole.csproj b/VectoConsole/VectoConsole.csproj
index 082fd87fc7..1edccea649 100644
--- a/VectoConsole/VectoConsole.csproj
+++ b/VectoConsole/VectoConsole.csproj
@@ -52,6 +52,16 @@
   <PropertyGroup>
     <ApplicationIcon>VECTO.ico</ApplicationIcon>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>true</Prefer32Bit>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
diff --git a/VectoCore/ModelbasedTests/ModelbasedTests.csproj b/VectoCore/ModelbasedTests/ModelbasedTests.csproj
index 15a2dce46e..553e3b89bd 100644
--- a/VectoCore/ModelbasedTests/ModelbasedTests.csproj
+++ b/VectoCore/ModelbasedTests/ModelbasedTests.csproj
@@ -35,6 +35,14 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="nunit.framework">
       <HintPath>..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj
index 3a3a2b2dff..cf42644e2f 100644
--- a/VectoCore/VectoCore/VectoCore.csproj
+++ b/VectoCore/VectoCore/VectoCore.csproj
@@ -83,6 +83,14 @@
     <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
     <Reference Include="Microsoft.VisualBasic" />
@@ -361,7 +369,7 @@
     <EmbeddedResource Include="Resources\Declaration\VAUX\PS-Table.csv" />
     <EmbeddedResource Include="Resources\Declaration\VAUX\SP-Table.csv" />
     <EmbeddedResource Include="Resources\Declaration\VAUX\SP-Tech.csv" />
-    <EmbeddedResource Include="Resources\Declaration\VCDV\parameters.csv" />
+    <EmbeddedResource Include="Resources\Declaration\VCDV\VCDV_parameters.csv" />
     <EmbeddedResource Include="Resources\Declaration\WHTC-Weighting-Factors.csv" />
     <EmbeddedResource Include="Resources\Declaration\VAUX\ALT-Tech.csv" />
     <EmbeddedResource Include="Resources\Declaration\Report\cyclePageTemplate.pdf" />
diff --git a/VectoCore/VectoCoreTest/Dummy/EngineFLDTest.cs b/VectoCore/VectoCoreTest/Dummy/EngineFLDTest.cs
index 7255209338..f2f69a3934 100644
--- a/VectoCore/VectoCoreTest/Dummy/EngineFLDTest.cs
+++ b/VectoCore/VectoCoreTest/Dummy/EngineFLDTest.cs
@@ -29,70 +29,70 @@
 *   Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
 */
 
-using System;
-using System.Diagnostics;
-using System.IO;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-using TUGraz.VectoCommon.Utils;
-using TUGraz.VectoCore.InputData.Reader;
-using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
-
-namespace TUGraz.VectoCore.Tests.Dummy
-{
-	[TestClass]
-	public class EngineFLDTest
-	{
-		[TestMethod]
-		public void CompareFLDLookupPerformance()
-		{
-			var engineFile1 = @"TestData\Components\40t_Long_Haul_Truck.vfld";
-			var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
-
-			if (!File.Exists(engineFile2)) {
-				Assert.Inconclusive("Confidential File not found. Test cannot run without file.");
-			}
-
-			var map1 = FullLoadCurveReader.ReadFromFile(engineFile1, true);
-			var map2 = FullLoadCurveReader.ReadFromFile(engineFile2, true);
-
-			map1.FullLoadStationaryTorque(1000.RPMtoRad());
-			map2.FullLoadStationaryTorque(1000.RPMtoRad());
-
-			foreach (var map in new[] { map1, map2 }) {
-				var rand = new Random();
-				var stopWatch = Stopwatch.StartNew();
-
-
-				for (var i = 0; i < 500000; i++) {
-					var angularVelocity = rand.Next(1000, 1400).RPMtoRad();
-
-					var tqMax = map.FullLoadStationaryTorque(angularVelocity);
-				}
-
-				stopWatch.Stop();
-				Debug.Print("{0}", stopWatch.ElapsedMilliseconds);
-			}
-		}
-
-		[TestMethod]
-		public void LookupTest()
-		{
-			var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
-
-			if (!File.Exists(engineFile2)) {
-				Assert.Inconclusive("Confidential File not found. Test cannot run without file.");
-			}
-
-			var map = FullLoadCurveReader.ReadFromFile(engineFile2, true);
-
-			Assert.AreEqual(1208, map.FullLoadStationaryTorque(500.RPMtoRad()).Value(), 1e-3);
-
-			Assert.AreEqual(27, map.FullLoadStationaryTorque(2202.RPMtoRad()).Value(), 1e-3);
-
-			Assert.AreEqual(2341.5714, map.FullLoadStationaryTorque(1500.RPMtoRad()).Value(), 1e-3);
-			Assert.AreEqual(376.7142, map.FullLoadStationaryTorque(2175.RPMtoRad()).Value(), 1e-3);
-
-			Assert.AreEqual(1544, map.FullLoadStationaryTorque(628.RPMtoRad()).Value(), 1e-3);
-		}
-	}
-}
\ No newline at end of file
+using System;
+using System.Diagnostics;
+using System.IO;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using TUGraz.VectoCommon.Utils;
+using TUGraz.VectoCore.InputData.Reader;
+using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
+
+namespace TUGraz.VectoCore.Tests.Dummy
+{
+	[TestClass]
+	public class EngineFLDTest
+	{
+		[TestMethod]
+		public void CompareFLDLookupPerformance()
+		{
+			var engineFile1 = @"TestData\Components\40t_Long_Haul_Truck.vfld";
+			var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
+
+			if (!File.Exists(engineFile2)) {
+				Assert.Inconclusive("Confidential File not found. Test cannot run without file.");
+			}
+
+			var map1 = FullLoadCurveReader.ReadFromFile(engineFile1, true);
+			var map2 = FullLoadCurveReader.ReadFromFile(engineFile2, true);
+
+			map1.FullLoadStationaryTorque(1000.RPMtoRad());
+			map2.FullLoadStationaryTorque(1000.RPMtoRad());
+
+			foreach (var map in new[] { map1, map2 }) {
+				var rand = new Random();
+				var stopWatch = Stopwatch.StartNew();
+
+
+				for (var i = 0; i < 500000; i++) {
+					var angularVelocity = rand.Next(1000, 1400).RPMtoRad();
+
+					var tqMax = map.FullLoadStationaryTorque(angularVelocity);
+				}
+
+				stopWatch.Stop();
+				Debug.Print("{0}", stopWatch.ElapsedMilliseconds);
+			}
+		}
+
+		[TestMethod]
+		public void LookupTest()
+		{
+			var engineFile2 = @"E:\QUAM\Downloads\EngineFLD\Map_375c_BB1390_modTUG_R49_375c_BB1386.vfld";
+
+			if (!File.Exists(engineFile2)) {
+				Assert.Inconclusive("Confidential File not found. Test cannot run without file.");
+			}
+
+			var map = FullLoadCurveReader.ReadFromFile(engineFile2, true);
+
+			Assert.AreEqual(1208, map.FullLoadStationaryTorque(500.RPMtoRad()).Value(), 1e-3);
+
+			Assert.AreEqual(27, map.FullLoadStationaryTorque(2202.RPMtoRad()).Value(), 1e-3);
+
+			Assert.AreEqual(2341.5714, map.FullLoadStationaryTorque(1500.RPMtoRad()).Value(), 1e-3);
+			Assert.AreEqual(376.7142, map.FullLoadStationaryTorque(2175.RPMtoRad()).Value(), 1e-3);
+
+			Assert.AreEqual(1544, map.FullLoadStationaryTorque(628.RPMtoRad()).Value(), 1e-3);
+		}
+	}
+}
diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
index 137e8472b0..789bdb1ceb 100644
--- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj
+++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj
@@ -35,6 +35,14 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deploy|AnyCPU'">
+    <OutputPath>bin\Deploy\</OutputPath>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Microsoft.CSharp" />
     <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
-- 
GitLab