aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy <Roy.mail.net@gmail.com>2022-10-26 20:46:13 +0300
committerRoy <Roy.mail.net@gmail.com>2022-10-26 20:46:13 +0300
commiteb2d1376f1b8bdc501f85f2d2ee1ffa291838022 (patch)
tree2ecfb2dbd0919adc1b2c169384711a03b5a73735 /Software/Visual_Studio
parent6e656acd517f5843d647b0c52791a3cf1d530340 (diff)
downloadTango-eb2d1376f1b8bdc501f85f2d2ee1ffa291838022.tar.gz
Tango-eb2d1376f1b8bdc501f85f2d2ee1ffa291838022.zip
Work on FSE build variants.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Publisher.UI/MainWindowVM.cs58
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.UI/Post_Build.bat15
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Web/Messages/BuildVariants.cs3
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs6
-rw-r--r--Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs6
-rw-r--r--Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram192
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEController.cs20
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEDownloadsController.cs11
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Models/FSEPendingUpload.cs2
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs2
10 files changed, 184 insertions, 131 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Publisher.UI/MainWindowVM.cs b/Software/Visual_Studio/FSE/Tango.FSE.Publisher.UI/MainWindowVM.cs
index 45aabf097..93a93bab5 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Publisher.UI/MainWindowVM.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Publisher.UI/MainWindowVM.cs
@@ -25,7 +25,12 @@ namespace Tango.FSE.Publisher.UI
{
private FSEWebClient _client;
private String _buildFolder;
+
+#if TS
+ private const String APP_EXE_NAME = "Tango.TwineStudio.UI.exe";
+#else
private const String APP_EXE_NAME = "Tango.FSE.UI.exe";
+#endif
private List<EnvironmentConfiguration> _environments;
public List<EnvironmentConfiguration> Environments
@@ -104,6 +109,19 @@ namespace Tango.FSE.Publisher.UI
set { _progress = value; RaisePropertyChangedAuto(); }
}
+ public BuildVariants BuildVariant
+ {
+ get
+ {
+#if TS
+ return BuildVariants.TwineStudio;
+#else
+ return BuildVariants.FSE;
+#endif
+ }
+ }
+
+
public RelayCommand PublishCommand { get; set; }
@@ -169,10 +187,10 @@ namespace Tango.FSE.Publisher.UI
{
UpdateProgress("Searching build path...");
- String path = Path.GetFullPath($@"../../../../Build\FSE\{BuildConfig}");
+ String path = Path.GetFullPath($@"../../../../Build\{(BuildVariant == BuildVariants.FSE ? "FSE" : "Twine Studio")}\{BuildConfig}");
if (!Directory.Exists(path))
{
- ShowError($"Could not locate FSE build folder at '{path}'.");
+ ShowError($"Could not locate {BuildVariant} build folder at '{path}'.");
}
_buildFolder = path;
@@ -198,7 +216,7 @@ namespace Tango.FSE.Publisher.UI
IsFree = false;
UpdateProgress("Getting remote version...");
_client = new FSEWebClient(SelectedEnvironment.MachineServiceAddress);
- RemoteVersion = (await _client.GetLatestVersion(new Web.Messages.LatestVersionRequest() { Build = BL.BuildProvider.Build })).Version;
+ RemoteVersion = (await _client.GetLatestVersion(new Web.Messages.LatestVersionRequest() { Build = BuildVariant })).Version;
ProgressReady();
}
catch (Exception ex)
@@ -217,24 +235,24 @@ namespace Tango.FSE.Publisher.UI
try
{
IsFree = false;
- UpdateProgress("Publishing Tango FSE...");
+ UpdateProgress($"Publishing {BuildVariant.ToDescription()}...");
var settings = SettingsManager.Default.GetOrCreate<PublisherSettings>();
settings.Email = Email;
settings.Password = Password;
settings.Save();
- UpdateProgress("Validating Tango FSE installer....");
+ UpdateProgress($"Validating {BuildVariant.ToDescription()} installer....");
- String projectPath = Path.GetFullPath(@"../../../../Advanced Installer Projects\FSE Installer.aip");
+ String projectPath = Path.GetFullPath($@"../../../../Advanced Installer Projects\{BuildVariant} Installer.aip");
if (!File.Exists(projectPath))
{
throw new FileNotFoundException($"Could not locate advanced installer project at '{projectPath}'.");
}
- String installerName = $"Tango FSE v{System.Version.Parse(LocalVersion).ToString(3)}.exe";
- String installerPath = Path.GetFullPath($@"../../../../Build\Installers\FSE\Release\{installerName}");
+ String installerName = $"{BuildVariant.ToDescription()} v{System.Version.Parse(LocalVersion).ToString(3)}.exe";
+ String installerPath = Path.GetFullPath($@"../../../../Build\Installers\{BuildVariant}\Release\{installerName}");
if (!Directory.Exists(Path.GetDirectoryName(installerPath)))
{
@@ -247,7 +265,7 @@ namespace Tango.FSE.Publisher.UI
Email = Email,
Password = Password,
Version = LocalVersion,
- Build = BL.BuildProvider.Build
+ Build = BuildVariant
});
UpdateProgress("Requesting version upload...");
@@ -256,10 +274,10 @@ namespace Tango.FSE.Publisher.UI
Comments = Comments,
InstallerBlobName = installerName,
Version = LocalVersion,
- Build = BL.BuildProvider.Build
+ Build = BuildVariant
});
- UpdateProgress("Building Tango FSE installer...");
+ UpdateProgress($"Building {BuildVariant.ToDescription()} installer...");
InstallerBuilder builder = new InstallerBuilder(projectPath);
await builder.Build(LocalVersion, installerPath);
@@ -269,13 +287,13 @@ namespace Tango.FSE.Publisher.UI
throw new FileNotFoundException($"Installer build was successful but the output installer could not be located at the specified path '{installerPath}'.");
}
- UpdateProgress("Uploading Tango FSE installer...");
+ UpdateProgress($"Uploading {BuildVariant.ToDescription()} installer...");
using (StorageBlobUploader uploader = new StorageBlobUploader(uploadResponse.InstallerBlobAddress, installerPath))
{
uploader.Progress += (x, e) =>
{
- UpdateProgress("Uploading Tango FSE installer...", false, e.Current, e.Total);
+ UpdateProgress($"Uploading {BuildVariant.ToDescription()} installer...", false, e.Current, e.Total);
};
await uploader.Upload();
@@ -286,7 +304,7 @@ namespace Tango.FSE.Publisher.UI
await _client.NotifyVersionUploadCompleted(new UploadCompletedRequest()
{
Token = uploadResponse.Token,
- Build = BL.BuildProvider.Build
+ Build = BuildVariant
});
UpdateProgress("Validating...");
@@ -303,7 +321,7 @@ namespace Tango.FSE.Publisher.UI
{
String repoPath = Path.GetFullPath("../../../../../../");
String tagVersion = System.Version.Parse(LocalVersion).ToString(3);
- String tagName = $"FSE_v{tagVersion}";
+ String tagName = $"{BuildVariant}_v{tagVersion}";
using (GitRepositoryManager git = new GitRepositoryManager(repoPath, Email, ConfigurationManager.AppSettings.Get("PAT")))
{
@@ -349,15 +367,15 @@ namespace Tango.FSE.Publisher.UI
});
}
- Process.Start(SelectedEnvironment.MachineServiceAddress + "/fse");
+ Process.Start(SelectedEnvironment.MachineServiceAddress + $"/fse?buildVariant={(int)BuildVariant}");
UpdateProgress("Version published successfully!", false, 100, 100);
- ShowInfo("Tango FSE published successfully!");
+ ShowInfo($"{BuildVariant.ToDescription()} published successfully!");
IsFree = true;
}
catch (Exception ex)
{
- ShowError($"Error while trying to publish Tango FSE\n{ex.FlattenMessage()}");
+ ShowError($"Error while trying to publish {BuildVariant.ToDescription()}\n{ex.FlattenMessage()}");
IsFree = true;
}
}
@@ -365,12 +383,12 @@ namespace Tango.FSE.Publisher.UI
private void ShowError(String error)
{
UpdateProgress("Error!", false, 0, 100);
- MessageBox.Show(error, "FSE Publisher", MessageBoxButton.OK, MessageBoxImage.Error);
+ MessageBox.Show(error, $"{BuildVariant} Publisher", MessageBoxButton.OK, MessageBoxImage.Error);
}
private void ShowInfo(String message)
{
- MessageBox.Show(message, "FSE Publisher", MessageBoxButton.OK, MessageBoxImage.Information);
+ MessageBox.Show(message, $"{BuildVariant} Publisher", MessageBoxButton.OK, MessageBoxImage.Information);
}
private void UpdateProgress(String message, bool isIndeterminate = true, double value = 0, double max = 100)
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Post_Build.bat b/Software/Visual_Studio/FSE/Tango.FSE.UI/Post_Build.bat
index dcfbcf208..b67d657e9 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Post_Build.bat
+++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Post_Build.bat
@@ -17,9 +17,9 @@ del WebRtc.NET.pdb
rem -------------------- Twine Studio -----------------------------------
-del "Tango.Twine Studio.UI.exe"
-del "Tango.Twine Studio.UI.exe.config"
-del "Tango.Twine Studio.UI.pdb"
+del "Tango.TwineStudio.UI.exe"
+del "Tango.TwineStudio.UI.exe.config"
+del "Tango.TwineStudio.UI.pdb"
if %1==TS (
goto TwineStudioRelease
@@ -31,13 +31,14 @@ if %1==TS_Debug (
)
:TwineStudioRelease
-ren "Tango.FSE.UI.exe" "Tango.Twine Studio.UI.exe"
-ren "Tango.FSE.UI.exe.config" "Tango.Twine Studio.UI.exe.config"
-ren "Tango.FSE.UI.pdb" "Tango.Twine Studio.UI.pdb"
+echo Modifying Assembly to "Twine Studio"
+ren "Tango.FSE.UI.exe" "Tango.TwineStudio.UI.exe"
+ren "Tango.FSE.UI.exe.config" "Tango.TwineStudio.UI.exe.config"
+ren "Tango.FSE.UI.pdb" "Tango.TwineStudio.UI.pdb"
:TwineStudio
-echo Modifying Assembly to "Twine Studio"
+echo Excluding Assemblies for Twine Studio
rem Exclude Modules
del Tango.FSE.Diagnostics.*
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Web/Messages/BuildVariants.cs b/Software/Visual_Studio/FSE/Tango.FSE.Web/Messages/BuildVariants.cs
index 0c117541d..dd3428091 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Web/Messages/BuildVariants.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Web/Messages/BuildVariants.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -8,7 +9,9 @@ namespace Tango.FSE.Web.Messages
{
public enum BuildVariants
{
+ [Description("Tango FSE")]
FSE,
+ [Description("Twine Studio")]
TwineStudio
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs
index 9b09e7df0..84af32d43 100644
--- a/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs
+++ b/Software/Visual_Studio/Tango.BL/Enumerations/Permissions.cs
@@ -349,5 +349,11 @@ namespace Tango.BL.Enumerations
[Description("Allows emulating machine events remotely")]
FSE_EmulateMachineEvents = 1032,
+ /// <summary>
+ /// (Allows access to Twine Studio)
+ /// </summary>
+ [Description("Allows access to Twine Studio")]
+ TwineStudioAccess = 2000,
+
}
}
diff --git a/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs b/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs
index c1919c3bb..8b1ad1293 100644
--- a/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs
+++ b/Software/Visual_Studio/Tango.BL/Enumerations/Roles.cs
@@ -152,6 +152,12 @@ namespace Tango.BL.Enumerations
MachineManager = 17,
/// <summary>
+ /// (Standard User)
+ /// </summary>
+ [Description("Standard User")]
+ TwineStudioUser = 2000,
+
+ /// <summary>
/// (Twine Procedure Designer)
/// </summary>
[Description("Twine Procedure Designer")]
diff --git a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram
index bc0945878..ca346e05e 100644
--- a/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram
+++ b/Software/Visual_Studio/Tango.DAL.Remote/DB/RemoteADO.edmx.diagram
@@ -5,102 +5,102 @@
<!-- Diagram content (shape and connector positions) -->
<edmx:Diagrams>
<Diagram DiagramId="f9ae01d708754bbd997add25a4bacc79" Name="Diagram1" ZoomLevel="87">
- <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="8" />
- <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="48.5" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="1.5" PointY="79.125" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="53.125" />
- <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="1.5" PointY="73.25" />
- <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="16.75" PointY="5.75" />
- <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="17.875" />
- <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="31.625" />
- <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="7.75" />
- <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="3" PointY="32.125" />
- <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="21.5" />
- <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="28.25" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="9" PointY="35.125" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="13.5" PointY="16.75" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="15.75" PointY="15.5" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="25.375" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="16.75" PointY="9.75" />
- <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="28.5" />
- <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="0.75" PointY="58.625" />
- <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="44.625" />
- <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="25.375" />
- <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="5.25" PointY="69.125" />
- <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="0.75" PointY="83.125" />
- <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="3" PointY="82.625" />
- <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="76.25" />
- <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="4.875" />
- <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="41.125" />
- <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="22" />
- <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="11.625" />
- <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="34.875" />
- <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="17.75" PointY="13.75" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="7.5" PointY="83.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="9.75" PointY="75.25" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="4.5" PointY="77.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="6.75" PointY="75.25" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="8.5" PointY="79.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="10.75" PointY="68.5" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="8.5" PointY="61.5" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="10.75" PointY="58.25" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="5.5" PointY="59.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="7.75" PointY="67.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="3.5" PointY="87.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="5.75" PointY="63.25" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="1.5" PointY="69" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="1.5" PointY="91.625" />
- <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="3.75" PointY="73.375" />
- <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="3" PointY="35" />
- <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="5.25" PointY="34.5" />
- <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="19.75" PointY="5.75" />
- <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="17.75" />
- <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="25.375" />
- <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="3" PointY="10.5" />
- <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="21.625" />
- <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="17.125" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="13.75" PointY="4.75" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="4.375" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="0.75" PointY="65" />
- <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="3" PointY="57" />
- <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="37.25" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="38.25" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="11" />
- <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="14.125" />
- <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="3" PointY="38.25" />
- <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="1" />
- <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="29.125" />
- <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="48.5" />
- <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="51.5" />
- <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="16.75" PointY="2" />
- <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="19" PointY="2.125" />
- <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="5" PointY="6" />
- <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15.375" />
- <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="17.375" />
- <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="0.75" />
- <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="0.875" />
- <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="20.75" PointY="14.75" />
- <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="21.5" />
- <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="21.75" />
- <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="1.5" />
- <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="14.25" PointY="11.875" />
- <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="17.875" />
- <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="8.25" PointY="1.75" />
- <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="6" PointY="11.75" />
- <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="8.25" PointY="40" />
- <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="20.75" PointY="18.75" />
- <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="20.75" PointY="21.75" />
- <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="37.125" />
- <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="21.75" PointY="1.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="21.75" PointY="5.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="21.75" PointY="8.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="22.75" PointY="11.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="22.75" PointY="16.75" />
- <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="22.75" PointY="21.75" />
- <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="10.375" />
- <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="7.875" />
- <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="2.75" PointY="6.5" />
- <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="32" />
+ <EntityTypeShape EntityType="RemoteModel.ACTION_LOGS" Width="1.5" PointX="11.25" PointY="3.75" />
+ <EntityTypeShape EntityType="RemoteModel.ADDRESS" Width="1.5" PointX="1.5" PointY="49.875" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_DISPLAY_PANEL_VERSIONS" Width="1.5" PointX="4.5" PointY="66.875" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="63.875" />
+ <EntityTypeShape EntityType="RemoteModel.APPLICATION_OS_VERSIONS" Width="1.5" PointX="4.5" PointY="74" />
+ <EntityTypeShape EntityType="RemoteModel.BIT_TYPES" Width="1.5" PointX="5.75" PointY="2.125" />
+ <EntityTypeShape EntityType="RemoteModel.BRUSH_STOPS" Width="1.5" PointX="18" PointY="18.25" />
+ <EntityTypeShape EntityType="RemoteModel.BTSR_APPLICATION_TYPES" Width="1.5" PointX="0.75" PointY="11" />
+ <EntityTypeShape EntityType="RemoteModel.BTSR_YARN_TYPES" Width="1.5" PointX="0.75" PointY="35.625" />
+ <EntityTypeShape EntityType="RemoteModel.CARTRIDGE_TYPES" Width="1.5" PointX="7.75" PointY="55.25" />
+ <EntityTypeShape EntityType="RemoteModel.CAT" Width="1.5" PointX="5.25" PointY="25.75" />
+ <EntityTypeShape EntityType="RemoteModel.CCT" Width="1.5" PointX="0.75" PointY="42.125" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS" Width="1.5" PointX="1.5" PointY="61.625" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_GROUPS" Width="1.5" PointX="0.75" PointY="56.125" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS" Width="1.5" PointX="3" PointY="54.875" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_CATALOGS_ITEMS_RECIPES" Width="1.5" PointX="5.25" PointY="21.75" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_PROCESS_INK_UPTAKE" Width="1.5" PointX="2.75" PointY="10.125" />
+ <EntityTypeShape EntityType="RemoteModel.COLOR_SPACES" Width="1.5" PointX="9" PointY="29.5" />
+ <EntityTypeShape EntityType="RemoteModel.CONFIGURATION" Width="1.5" PointX="6.75" PointY="66.5" />
+ <EntityTypeShape EntityType="RemoteModel.CONTACT" Width="1.5" PointX="1.5" PointY="45.875" />
+ <EntityTypeShape EntityType="RemoteModel.CUSTOMER" Width="1.5" PointX="9" PointY="26.375" />
+ <EntityTypeShape EntityType="RemoteModel.DATA_STORE_ITEMS" Width="1.5" PointX="11.25" PointY="77" />
+ <EntityTypeShape EntityType="RemoteModel.DISPENSER_TYPES" Width="1.5" PointX="5.5" PointY="36.75" />
+ <EntityTypeShape EntityType="RemoteModel.DISPENSER" Width="1.5" PointX="7.75" PointY="36.25" />
+ <EntityTypeShape EntityType="RemoteModel.EMBEDDED_FIRMWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="61" />
+ <EntityTypeShape EntityType="RemoteModel.EVENT_TYPES" Width="1.5" PointX="9" PointY="0.75" />
+ <EntityTypeShape EntityType="RemoteModel.FIBER_SHAPES" Width="1.5" PointX="0.75" PointY="17.25" />
+ <EntityTypeShape EntityType="RemoteModel.FIBER_SYNTHS" Width="1.5" PointX="0.75" PointY="22.25" />
+ <EntityTypeShape EntityType="RemoteModel.FSE_VERSIONS" Width="1.5" PointX="11.25" PointY="9.625" />
+ <EntityTypeShape EntityType="RemoteModel.GBD" Width="1.5" PointX="0.75" PointY="26.125" />
+ <EntityTypeShape EntityType="RemoteModel.GLOBAL_DATA_STORE_ITEMS" Width="1.5" PointX="13.75" PointY="16.125" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWER_TYPES" Width="1.5" PointX="9.5" PointY="61.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BLOWERS" Width="1.5" PointX="11.75" PointY="64.875" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSOR_TYPES" Width="1.5" PointX="11.5" PointY="88.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_BREAK_SENSORS" Width="1.5" PointX="13.75" PointY="77" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCER_TYPES" Width="1.5" PointX="9.5" PointY="84.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_DANCERS" Width="1.5" PointX="11.75" PointY="69.25" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTOR_TYPES" Width="1.5" PointX="12.5" PointY="81.25" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_MOTORS" Width="1.5" PointX="14.75" PointY="67" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROL_TYPES" Width="1.5" PointX="4.5" PointY="77.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_PID_CONTROLS" Width="1.5" PointX="6.75" PointY="59.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSOR_TYPES" Width="1.5" PointX="12.5" PointY="61.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_SPEED_SENSORS" Width="1.5" PointX="14.75" PointY="63" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_VERSIONS" Width="1.5" PointX="4.5" PointY="69.75" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDER_TYPES" Width="1.5" PointX="4.5" PointY="81.375" />
+ <EntityTypeShape EntityType="RemoteModel.HARDWARE_WINDERS" Width="1.5" PointX="6.75" PointY="72.125" />
+ <EntityTypeShape EntityType="RemoteModel.IDS_PACK_FORMULAS" Width="1.5" PointX="7.75" PointY="80.5" />
+ <EntityTypeShape EntityType="RemoteModel.IDS_PACKS" Width="1.5" PointX="10" PointY="48.375" />
+ <EntityTypeShape EntityType="RemoteModel.JOB_RUNS" Width="1.5" PointX="16.75" PointY="2.125" />
+ <EntityTypeShape EntityType="RemoteModel.JOB" Width="1.5" PointX="11.25" PointY="18.125" />
+ <EntityTypeShape EntityType="RemoteModel.LINEAR_MASS_DENSITY_UNITS" Width="1.5" PointX="0.75" PointY="32.75" />
+ <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES" Width="1.5" PointX="6" PointY="30.375" />
+ <EntityTypeShape EntityType="RemoteModel.LIQUID_TYPES_RMLS" Width="1.5" PointX="8.25" PointY="22" />
+ <EntityTypeShape EntityType="RemoteModel.LUB" Width="1.5" PointX="0.75" PointY="29.5" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE_PROTOTYPES" Width="1.5" PointX="18.75" PointY="2.125" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE_STUDIO_VERSIONS" Width="1.5" PointX="11.25" PointY="14.125" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE_VERSIONS" Width="1.5" PointX="6.75" PointY="76.875" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINE" Width="1.5" PointX="9" PointY="64.875" />
+ <EntityTypeShape EntityType="RemoteModel.MACHINES_EVENTS" Width="1.5" PointX="11.25" PointY="39.125" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_CONDITIONS" Width="1.5" PointX="0.75" PointY="14.25" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_MATERIALS" Width="1.5" PointX="0.75" PointY="39" />
+ <EntityTypeShape EntityType="RemoteModel.MEDIA_PURPOSES" Width="1.5" PointX="0.75" PointY="8.125" />
+ <EntityTypeShape EntityType="RemoteModel.MID_TANK_TYPES" Width="1.5" PointX="7.75" PointY="41" />
+ <EntityTypeShape EntityType="RemoteModel.ORGANIZATION" Width="1.5" PointX="0.75" PointY="1.375" />
+ <EntityTypeShape EntityType="RemoteModel.PERMISSION" Width="1.5" PointX="12" PointY="53.625" />
+ <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES" Width="1.5" PointX="7.5" PointY="45" />
+ <EntityTypeShape EntityType="RemoteModel.PROCESS_PARAMETERS_TABLES_GROUPS" Width="1.5" PointX="5.25" PointY="48" />
+ <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS" Width="1.5" PointX="13.75" PointY="12.25" />
+ <EntityTypeShape EntityType="RemoteModel.PUBLISHED_PROCEDURE_PROJECTS_VERSIONS" Width="1.5" PointX="16" PointY="12.5" />
+ <EntityTypeShape EntityType="RemoteModel.RML_EXTENSION_TEST_WASHING_RESULTS" Width="1.5" PointX="5" PointY="6.25" />
+ <EntityTypeShape EntityType="RemoteModel.RML" Width="1.5" PointX="3" PointY="15.75" />
+ <EntityTypeShape EntityType="RemoteModel.RMLS_SPOOLS" Width="1.5" PointX="8.25" PointY="17.75" />
+ <EntityTypeShape EntityType="RemoteModel.ROLE" Width="1.5" PointX="12" PointY="29.625" />
+ <EntityTypeShape EntityType="RemoteModel.ROLES_PERMISSIONS" Width="1.5" PointX="14.25" PointY="29.625" />
+ <EntityTypeShape EntityType="RemoteModel.RUBBING_RESULTS" Width="1.5" PointX="18.75" PointY="5.125" />
+ <EntityTypeShape EntityType="RemoteModel.SEGMENT" Width="1.5" PointX="15.75" PointY="21.75" />
+ <EntityTypeShape EntityType="RemoteModel.SEGMENTS_GROUPS" Width="1.5" PointX="13.5" PointY="22.125" />
+ <EntityTypeShape EntityType="RemoteModel.SITE" Width="1.5" PointX="3" PointY="1.875" />
+ <EntityTypeShape EntityType="RemoteModel.SITES_CATALOGS" Width="1.5" PointX="10.25" PointY="33.375" />
+ <EntityTypeShape EntityType="RemoteModel.SITES_RMLS" Width="1.5" PointX="5.25" PointY="18.125" />
+ <EntityTypeShape EntityType="RemoteModel.SITES_SPOOL_TYPES" Width="1.5" PointX="14.25" PointY="8.125" />
+ <EntityTypeShape EntityType="RemoteModel.SPOOL_TYPES" Width="1.5" PointX="6" PointY="12" />
+ <EntityTypeShape EntityType="RemoteModel.SPOOL" Width="1.5" PointX="11.25" PointY="44.125" />
+ <EntityTypeShape EntityType="RemoteModel.sysdiagram" Width="1.5" PointX="18.75" PointY="9.125" />
+ <EntityTypeShape EntityType="RemoteModel.TANGO_UPDATES" Width="1.5" PointX="18.75" PointY="12.125" />
+ <EntityTypeShape EntityType="RemoteModel.TANGO_VERSIONS" Width="1.5" PointX="14.25" PointY="41" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_CONTROLLERS" Width="1.5" PointX="20.75" PointY="2.125" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_DISPENSERS" Width="1.5" PointX="20.75" PointY="6.125" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_HEATERS" Width="1.5" PointX="20.75" PointY="9.125" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_IOS" Width="1.5" PointX="20.75" PointY="12.125" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_MONITORS" Width="1.5" PointX="20.75" PointY="17.125" />
+ <EntityTypeShape EntityType="RemoteModel.TECH_VALVES" Width="1.5" PointX="20.75" PointY="22.125" />
+ <EntityTypeShape EntityType="RemoteModel.USER" Width="1.5" PointX="9" PointY="6.25" />
+ <EntityTypeShape EntityType="RemoteModel.USERS_ROLES" Width="1.5" PointX="14.25" PointY="4.625" />
+ <EntityTypeShape EntityType="RemoteModel.WASHING_TEST_MATERIALS" Width="1.5" PointX="2.75" PointY="6.75" />
+ <EntityTypeShape EntityType="RemoteModel.WINDING_METHODS" Width="1.5" PointX="9" PointY="12.25" />
<AssociationConnector Association="RemoteModel.FK_ACTION_LOGS_USERS" />
<AssociationConnector Association="RemoteModel.FK_ORGANIZATIONS_ADDRESSES" />
<AssociationConnector Association="RemoteModel.FK_USERS_ADDRESSES" />
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEController.cs
index b9dacfcf9..38c75934a 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEController.cs
@@ -84,6 +84,16 @@ namespace Tango.MachineService.Controllers
throw new AuthenticationException("Your account has been disabled. Please contact your administrator.");
}
+ if (request.Build == BuildVariants.FSE && !user.HasPermission(Permissions.FSE_RunFSE))
+ {
+ throw new AuthenticationException("You do not have permission to access Tango FSE. Please contact your administrator.");
+ }
+
+ if (request.Build == BuildVariants.TwineStudio && !user.HasPermission(Permissions.TwineStudioAccess))
+ {
+ throw new AuthenticationException("You do not have permission to access Twine Studio. Please contact your administrator.");
+ }
+
user.LastLogin = DateTime.UtcNow;
db.SaveChanges();
}
@@ -190,7 +200,7 @@ namespace Tango.MachineService.Controllers
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- var versions = db.FseVersions.ToList();
+ var versions = db.FseVersions.ToList().Where(x => x.BuildVariant == request.Build.ToInt32()).ToList();
FseVersion latestVersion = null;
@@ -336,7 +346,7 @@ namespace Tango.MachineService.Controllers
{
using (ObservablesContext db = ObservablesContextHelper.CreateContext())
{
- var version = db.FseVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
+ var version = db.FseVersions.ToList().Where(x => x.BuildVariant == request.Build.ToInt32()).OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
return new LatestVersionResponse() { Version = version != null ? version.Version : "0.0.0.0" };
}
}
@@ -356,7 +366,7 @@ namespace Tango.MachineService.Controllers
if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersions))
{
- var latestVersion = db.FseVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
+ var latestVersion = db.FseVersions.ToList().Where(x => x.BuildVariant == request.Build.ToInt32()).ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
Version local_version = Version.Parse(request.Version);
if (latestVersion == null || local_version > Version.Parse(latestVersion.Version))
@@ -375,7 +385,8 @@ namespace Tango.MachineService.Controllers
Token = response.Token,
Version = request.Version,
BlobName = "BLOB",
- InstallerBlobName = installerBlob.Name
+ InstallerBlobName = installerBlob.Name,
+ BuildVariant = request.Build.ToInt32()
};
_pendingUploads.Add(pending_upload);
@@ -413,6 +424,7 @@ namespace Tango.MachineService.Controllers
InstallerBlobName = upload.InstallerBlobName,
UserGuid = upload.UserGuid,
Version = upload.Version,
+ BuildVariant = upload.BuildVariant
});
db.SaveChanges();
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEDownloadsController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEDownloadsController.cs
index 52eb2bbb5..6c28d93ef 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEDownloadsController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/FSEDownloadsController.cs
@@ -16,29 +16,34 @@ using System.Net;
using System.Net.Http.Headers;
using System.Net.Mime;
using Tango.MachineService.Views.FSEDownloads;
+using Tango.BL.Enumerations;
namespace Tango.MachineService.Controllers
{
public class FSEDownloadsController : Controller
{
- public ActionResult Index()
+ public ActionResult Index(int? buildVariant = 0)
{
IndexViewModel model = new IndexViewModel();
using (var db = ObservablesContextHelper.CreateContext())
{
- var versions = db.FseVersions.ToList().OrderByDescending(x => Version.Parse(x.Version)).Take(6).ToList();
+ int build = buildVariant.Value;
+
+ var versions = db.FseVersions.Where(x => x.BuildVariant == build).ToList().OrderByDescending(x => Version.Parse(x.Version)).Take(6).ToList();
var manager = new BlobStorageManager();
var container = manager.GetContainer(MachineServiceConfig.FSE_VERSIONS_CONTAINER);
+ String appName = ((FSEBuildVariants)build) == FSEBuildVariants.FSE ? "Tango FSE" : "Twine Studio";
+
foreach (var item in versions)
{
var installerBlob = container.GetBlockBlobReference(item.InstallerBlobName);
model.Downloads.Add(new FSEDownload()
{
- Name = $"Tango FSE v{Version.Parse(item.Version).ToString(3)}",
+ Name = $"{appName} v{Version.Parse(item.Version).ToString(3)}",
Version = Version.Parse(item.Version).ToString(3),
Comments = item.Comments,
Date = item.LastUpdated.ToString("dddd, dd MMMM yyyy"),
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Models/FSEPendingUpload.cs b/Software/Visual_Studio/Web/Tango.MachineService/Models/FSEPendingUpload.cs
index 7bb74d045..a33ccfaae 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Models/FSEPendingUpload.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Models/FSEPendingUpload.cs
@@ -18,5 +18,7 @@ namespace Tango.MachineService.Models
public String BlobName { get; set; }
public String InstallerBlobName { get; set; }
+
+ public int BuildVariant { get; set; }
}
} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
index 3045818b0..0353e2df2 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
@@ -24,4 +24,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("3.0.13.0")]
+[assembly: AssemblyVersion("3.0.14.0")]