diff --git a/BismNormalizer/AlmToolkit/AlmToolkit.csproj b/BismNormalizer/AlmToolkit/AlmToolkit.csproj
index c871de1..984fd27 100644
--- a/BismNormalizer/AlmToolkit/AlmToolkit.csproj
+++ b/BismNormalizer/AlmToolkit/AlmToolkit.csproj
@@ -61,9 +61,8 @@
..\packages\Microsoft.AnalysisServices.retail.amd64.18.2.3\lib\net45\Microsoft.AnalysisServices.Tabular.Json.dll
-
- False
- ..\BismNormalizer\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\Octokit.0.36.0\lib\net46\Octokit.dll
diff --git a/BismNormalizer/AlmToolkit/App.config b/BismNormalizer/AlmToolkit/App.config
index 79753a9..1a1f34f 100644
--- a/BismNormalizer/AlmToolkit/App.config
+++ b/BismNormalizer/AlmToolkit/App.config
@@ -8,7 +8,7 @@
-
+
diff --git a/BismNormalizer/AlmToolkit/Properties/AssemblyInfo.cs b/BismNormalizer/AlmToolkit/Properties/AssemblyInfo.cs
index 4cc0a49..b025c6f 100644
--- a/BismNormalizer/AlmToolkit/Properties/AssemblyInfo.cs
+++ b/BismNormalizer/AlmToolkit/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("4.0.0.7")]
-[assembly: AssemblyFileVersion("4.0.0.7")]
+[assembly: AssemblyVersion("5.0.0.12")]
+[assembly: AssemblyFileVersion("5.0.0.12")]
diff --git a/BismNormalizer/AlmToolkit/packages.config b/BismNormalizer/AlmToolkit/packages.config
index b530814..76c3a2f 100644
--- a/BismNormalizer/AlmToolkit/packages.config
+++ b/BismNormalizer/AlmToolkit/packages.config
@@ -5,5 +5,6 @@
+
\ No newline at end of file
diff --git a/BismNormalizer/AlmToolkitSetup/AlmToolkitSetup.vdproj b/BismNormalizer/AlmToolkitSetup/AlmToolkitSetup.vdproj
index 755ea95..1e19341 100644
--- a/BismNormalizer/AlmToolkitSetup/AlmToolkitSetup.vdproj
+++ b/BismNormalizer/AlmToolkitSetup/AlmToolkitSetup.vdproj
@@ -28,6 +28,12 @@
"Entry"
{
"MsmKey" = "8:_0182F649532C289AB58CA84091A3EF12"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_0182F649532C289AB58CA84091A3EF12"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -40,12 +46,6 @@
"Entry"
{
"MsmKey" = "8:_0182F649532C289AB58CA84091A3EF12"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_0182F649532C289AB58CA84091A3EF12"
"OwnerKey" = "8:_3BA1BB04BE8689BEF79234210621C61F"
"MsmSig" = "8:_UNDEFINED"
}
@@ -298,6 +298,12 @@
"Entry"
{
"MsmKey" = "8:_1B2251DD757994082D5D85D7C9A38F82"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1B2251DD757994082D5D85D7C9A38F82"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -309,12 +315,6 @@
}
"Entry"
{
- "MsmKey" = "8:_1B2251DD757994082D5D85D7C9A38F82"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_1BC4692718F94CD799480D14260E2A0D"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -532,6 +532,12 @@
"Entry"
{
"MsmKey" = "8:_4126FF7CFF23C51CF812060FAEF25A8B"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_4126FF7CFF23C51CF812060FAEF25A8B"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -544,12 +550,6 @@
"Entry"
{
"MsmKey" = "8:_4126FF7CFF23C51CF812060FAEF25A8B"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_4126FF7CFF23C51CF812060FAEF25A8B"
"OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
"MsmSig" = "8:_UNDEFINED"
}
@@ -982,6 +982,12 @@
"Entry"
{
"MsmKey" = "8:_7344099411A9D2DBF4A784E3DE9EA77D"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_7344099411A9D2DBF4A784E3DE9EA77D"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -994,12 +1000,6 @@
"Entry"
{
"MsmKey" = "8:_7344099411A9D2DBF4A784E3DE9EA77D"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_7344099411A9D2DBF4A784E3DE9EA77D"
"OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1018,6 +1018,12 @@
"Entry"
{
"MsmKey" = "8:_7394A11393C98C1F559822AA8D6F2F6F"
+ "OwnerKey" = "8:_F6EABBB09E898B70DA1090707FAF54BA"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_7394A11393C98C1F559822AA8D6F2F6F"
"OwnerKey" = "8:_D4597F707D341D192D3B307F16FBD013"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1096,6 +1102,12 @@
"Entry"
{
"MsmKey" = "8:_7C49A244BD86813B688A86097B64A4BB"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_7C49A244BD86813B688A86097B64A4BB"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1107,12 +1119,6 @@
}
"Entry"
{
- "MsmKey" = "8:_7C49A244BD86813B688A86097B64A4BB"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_7C66897615D04979AA00553FFBE9F869"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -1156,6 +1162,12 @@
"Entry"
{
"MsmKey" = "8:_7FE319AF420BED1331D231C9E53A5979"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_7FE319AF420BED1331D231C9E53A5979"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1168,12 +1180,6 @@
"Entry"
{
"MsmKey" = "8:_7FE319AF420BED1331D231C9E53A5979"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_7FE319AF420BED1331D231C9E53A5979"
"OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1318,6 +1324,12 @@
"Entry"
{
"MsmKey" = "8:_8E074FE5AC5B455E0A4D2F176BA182EC"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_8E074FE5AC5B455E0A4D2F176BA182EC"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1330,12 +1342,6 @@
"Entry"
{
"MsmKey" = "8:_8E074FE5AC5B455E0A4D2F176BA182EC"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_8E074FE5AC5B455E0A4D2F176BA182EC"
"OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1384,6 +1390,12 @@
"Entry"
{
"MsmKey" = "8:_90FAC219254FDDE26D273DDEF52262FA"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_90FAC219254FDDE26D273DDEF52262FA"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1395,18 +1407,6 @@
}
"Entry"
{
- "MsmKey" = "8:_90FAC219254FDDE26D273DDEF52262FA"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_90FAC219254FDDE26D273DDEF52262FA"
- "OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_93213405E7044D8389BE2C29A2EAFCD5"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -1720,6 +1720,12 @@
"Entry"
{
"MsmKey" = "8:_BE16C201755759965787B7DDD5BFF7B9"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_BE16C201755759965787B7DDD5BFF7B9"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1732,12 +1738,6 @@
"Entry"
{
"MsmKey" = "8:_BE16C201755759965787B7DDD5BFF7B9"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_BE16C201755759965787B7DDD5BFF7B9"
"OwnerKey" = "8:_577232D49DA84949B3604BA695B35542"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1792,6 +1792,12 @@
"Entry"
{
"MsmKey" = "8:_C097D550A85D95BEFF69F1B452227F75"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_C097D550A85D95BEFF69F1B452227F75"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -1804,12 +1810,6 @@
"Entry"
{
"MsmKey" = "8:_C097D550A85D95BEFF69F1B452227F75"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_C097D550A85D95BEFF69F1B452227F75"
"OwnerKey" = "8:_1B2251DD757994082D5D85D7C9A38F82"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2176,6 +2176,12 @@
"Entry"
{
"MsmKey" = "8:_E6C48E30804B563751F799BDB82D2D5F"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_E6C48E30804B563751F799BDB82D2D5F"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2188,12 +2194,6 @@
"Entry"
{
"MsmKey" = "8:_E6C48E30804B563751F799BDB82D2D5F"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_E6C48E30804B563751F799BDB82D2D5F"
"OwnerKey" = "8:_7344099411A9D2DBF4A784E3DE9EA77D"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2266,6 +2266,12 @@
"Entry"
{
"MsmKey" = "8:_EEEF3B4DA37D965DCA452A1E7B283C82"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_EEEF3B4DA37D965DCA452A1E7B283C82"
"OwnerKey" = "8:_0020EC0A2900F50F0F5DCC3E7BBE4237"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2277,12 +2283,6 @@
}
"Entry"
{
- "MsmKey" = "8:_EEEF3B4DA37D965DCA452A1E7B283C82"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
"MsmKey" = "8:_EF0C782C601F42DE8C7EF094FA4ED82E"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -2337,6 +2337,12 @@
}
"Entry"
{
+ "MsmKey" = "8:_F6EABBB09E898B70DA1090707FAF54BA"
+ "OwnerKey" = "8:_7936400E6C154464B76D26251125123A"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
"MsmKey" = "8:_F9DF0866DA72405E973059961807829C"
"OwnerKey" = "8:_UNDEFINED"
"MsmSig" = "8:_UNDEFINED"
@@ -2464,6 +2470,12 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
+ "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_1AC259E78F48430A97FB3A4F9B9A4E7E"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2482,6 +2494,12 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
+ "OwnerKey" = "8:_F6EABBB09E898B70DA1090707FAF54BA"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_505B9CD6FBF318D5810A11D52DB3B890"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2500,12 +2518,6 @@
"Entry"
{
"MsmKey" = "8:_UNDEFINED"
- "OwnerKey" = "8:_1F23AE629378259BAD7F2BCAB42727AD"
- "MsmSig" = "8:_UNDEFINED"
- }
- "Entry"
- {
- "MsmKey" = "8:_UNDEFINED"
"OwnerKey" = "8:_0FD8120FEC5AB531A28085D3548D2C38"
"MsmSig" = "8:_UNDEFINED"
}
@@ -2788,7 +2800,7 @@
{
"Name" = "8:.NET Framework"
"Message" = "8:[VSDNETMSG]"
- "FrameworkVersion" = "8:v4.6.1 "
+ "FrameworkVersion" = "8:v4.6.1 "
"AllowLaterVersions" = "11:FALSE"
"InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728"
}
@@ -3737,7 +3749,7 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
- "AssemblyAsmDisplayName" = "8:BismNormalizer, Version=5.0.0.0, Culture=neutral, PublicKeyToken=aa6675aad991a644, processorArchitecture=MSIL"
+ "AssemblyAsmDisplayName" = "8:BismNormalizer, Version=5.0.0.5, Culture=neutral, PublicKeyToken=aa6675aad991a644, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_1F23AE629378259BAD7F2BCAB42727AD"
@@ -6486,16 +6498,16 @@
{
"AssemblyRegister" = "3:1"
"AssemblyIsInGAC" = "11:FALSE"
- "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
+ "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
"ScatterAssemblies"
{
"_90FAC219254FDDE26D273DDEF52262FA"
{
- "Name" = "8:Newtonsoft.Json.dll"
+ "Name" = "8:Newtonsoft.Json.DLL"
"Attributes" = "3:512"
}
}
- "SourcePath" = "8:Newtonsoft.Json.dll"
+ "SourcePath" = "8:Newtonsoft.Json.DLL"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_CAD31D6A85364CAA9F9BFC2750F80458"
@@ -8693,6 +8705,37 @@
"IsDependency" = "11:FALSE"
"IsolateTo" = "8:"
}
+ "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F6EABBB09E898B70DA1090707FAF54BA"
+ {
+ "AssemblyRegister" = "3:1"
+ "AssemblyIsInGAC" = "11:FALSE"
+ "AssemblyAsmDisplayName" = "8:Octokit, Version=0.36.0.0, Culture=neutral, processorArchitecture=MSIL"
+ "ScatterAssemblies"
+ {
+ "_F6EABBB09E898B70DA1090707FAF54BA"
+ {
+ "Name" = "8:Octokit.dll"
+ "Attributes" = "3:512"
+ }
+ }
+ "SourcePath" = "8:Octokit.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_CAD31D6A85364CAA9F9BFC2750F80458"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
"{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F9DF0866DA72405E973059961807829C"
{
"SourcePath" = "8:..\\AlmToolkit\\bin\\Release\\x64\\CefSharp.pdb"
@@ -9108,15 +9151,15 @@
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:Power BI ALM Toolkit"
- "ProductCode" = "8:{EC58BD25-446D-4EF7-8E93-1A33098306AC}"
- "PackageCode" = "8:{BF09F612-86C6-4112-A1B2-9B2C5C5BC994}"
+ "ProductCode" = "8:{13962090-506E-474D-8604-EB0615C440D8}"
+ "PackageCode" = "8:{4D7FD052-C740-438F-A96B-F399A9FCD682}"
"UpgradeCode" = "8:{96819CFD-6462-4AD1-ADB4-7903F30ADB92}"
"AspNetVersion" = "8:4.0.30319.0"
"RestartWWWService" = "11:FALSE"
"RemovePreviousVersions" = "11:TRUE"
"DetectNewerInstalledVersion" = "11:TRUE"
"InstallAllUsers" = "11:TRUE"
- "ProductVersion" = "8:4.0.1"
+ "ProductVersion" = "8:5.0.0"
"Manufacturer" = "8:Power BI ALM Toolkit"
"ARPHELPTELEPHONE" = "8:"
"ARPHELPLINK" = "8:"
diff --git a/BismNormalizer/BismNormalizer.CommandLine/Properties/AssemblyInfo.cs b/BismNormalizer/BismNormalizer.CommandLine/Properties/AssemblyInfo.cs
index 1e63128..670db3b 100644
--- a/BismNormalizer/BismNormalizer.CommandLine/Properties/AssemblyInfo.cs
+++ b/BismNormalizer/BismNormalizer.CommandLine/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("5.0.0.5")]
-[assembly: AssemblyFileVersion("5.0.0.5")]
+[assembly: AssemblyVersion("5.0.0.12")]
+[assembly: AssemblyFileVersion("5.0.0.12")]
diff --git a/BismNormalizer/BismNormalizer.IconSetup/Properties/AssemblyInfo.cs b/BismNormalizer/BismNormalizer.IconSetup/Properties/AssemblyInfo.cs
index 83ce81d..be30e80 100644
--- a/BismNormalizer/BismNormalizer.IconSetup/Properties/AssemblyInfo.cs
+++ b/BismNormalizer/BismNormalizer.IconSetup/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("5.0.0.5")]
-[assembly: AssemblyFileVersion("5.0.0.5")]
+[assembly: AssemblyVersion("5.0.0.12")]
+[assembly: AssemblyFileVersion("5.0.0.12")]
diff --git a/BismNormalizer/BismNormalizer/BismNormalizer.IconSetup.exe b/BismNormalizer/BismNormalizer/BismNormalizer.IconSetup.exe
index 1843af3..ef0322e 100644
Binary files a/BismNormalizer/BismNormalizer/BismNormalizer.IconSetup.exe and b/BismNormalizer/BismNormalizer/BismNormalizer.IconSetup.exe differ
diff --git a/BismNormalizer/BismNormalizer/BismNormalizer.csproj b/BismNormalizer/BismNormalizer/BismNormalizer.csproj
index b46dfdf..d19c62a 100644
--- a/BismNormalizer/BismNormalizer/BismNormalizer.csproj
+++ b/BismNormalizer/BismNormalizer/BismNormalizer.csproj
@@ -194,8 +194,8 @@
..\packages\Microsoft.VisualStudio.Validation.14.1.111\lib\net45\Microsoft.VisualStudio.Validation.dll
True
-
- ..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
+
+ ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll
..\packages\stdole.7.0.3302\lib\net10\stdole.dll
diff --git a/BismNormalizer/BismNormalizer/BismNormalizer.exe b/BismNormalizer/BismNormalizer/BismNormalizer.exe
index c8e2905..4e998b5 100644
Binary files a/BismNormalizer/BismNormalizer/BismNormalizer.exe and b/BismNormalizer/BismNormalizer/BismNormalizer.exe differ
diff --git a/BismNormalizer/BismNormalizer/Newtonsoft.Json.dll b/BismNormalizer/BismNormalizer/Newtonsoft.Json.dll
index 77a5d89..e4a6339 100644
Binary files a/BismNormalizer/BismNormalizer/Newtonsoft.Json.dll and b/BismNormalizer/BismNormalizer/Newtonsoft.Json.dll differ
diff --git a/BismNormalizer/BismNormalizer/Properties/AssemblyInfo.cs b/BismNormalizer/BismNormalizer/Properties/AssemblyInfo.cs
index d952911..564bc77 100644
--- a/BismNormalizer/BismNormalizer/Properties/AssemblyInfo.cs
+++ b/BismNormalizer/BismNormalizer/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("5.0.0.5")]
-[assembly: AssemblyFileVersion("5.0.0.5")]
+[assembly: AssemblyVersion("5.0.0.12")]
+[assembly: AssemblyFileVersion("5.0.0.12")]
diff --git a/BismNormalizer/BismNormalizer/TabularCompare/ComparisonFactory.cs b/BismNormalizer/BismNormalizer/TabularCompare/ComparisonFactory.cs
index 68f9c26..f8e9052 100644
--- a/BismNormalizer/BismNormalizer/TabularCompare/ComparisonFactory.cs
+++ b/BismNormalizer/BismNormalizer/TabularCompare/ComparisonFactory.cs
@@ -15,7 +15,7 @@ namespace BismNormalizer.TabularCompare
// Factory pattern: https://msdn.microsoft.com/en-us/library/orm-9780596527730-01-05.aspx
private static int _minCompatibilityLevel = 1100;
- private static int _maxCompatibilityLevel = 1500;
+ private static int _maxCompatibilityLevel = 1600;
private static List _supportedDataSourceVersions = new List { "PowerBI_V3" };
///
@@ -136,7 +136,7 @@ namespace BismNormalizer.TabularCompare
)
)
{
- throw new ConnectionException($"This combination of mixed compatibility levels is not supported.\nSource is {Convert.ToString(comparisonInfo.SourceCompatibilityLevel)} and target is {Convert.ToString(comparisonInfo.TargetCompatibilityLevel)}.");
+ throw new ConnectionException($"This combination of mixed compatibility levels is not supported.\nSource is {Convert.ToString(comparisonInfo.SourceCompatibilityLevel)} and target is {Convert.ToString(comparisonInfo.TargetCompatibilityLevel)}.\nMin supported compatibility level is {Convert.ToString(_minCompatibilityLevel)} and max is {Convert.ToString(_maxCompatibilityLevel)}.");
}
//Return the comparison object & offer upgrade of target if appropriate
@@ -166,12 +166,13 @@ namespace BismNormalizer.TabularCompare
//Check if source has a higher compat level than the target and offer upgrade if appropriate.
if (comparisonInfo.SourceCompatibilityLevel > comparisonInfo.TargetCompatibilityLevel)
{
- string message = $"Source compatibility level is { Convert.ToString(comparisonInfo.SourceCompatibilityLevel) } and target is { Convert.ToString(comparisonInfo.TargetCompatibilityLevel) }, which is not supported for comparison.\n";
+ string message = $"Source compatibility level { Convert.ToString(comparisonInfo.SourceCompatibilityLevel) } is higher than the target { Convert.ToString(comparisonInfo.TargetCompatibilityLevel) }, which is not supported for comparison.\n";
if (comparisonInfo.Interactive &&
!comparisonInfo.ConnectionInfoTarget.UseProject && //Upgrade in SSDT not supported
+ !comparisonInfo.ConnectionInfoTarget.UseDesktop && //Upgrade via port number to Desktop or SSDT not supported
System.Windows.Forms.MessageBox.Show(
- message += $"\nDo you want to upgrade the target to {Convert.ToString(comparisonInfo.SourceCompatibilityLevel)} and allow the comparison?", comparisonInfo.AppName, System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
+ message + $"\nDo you want to upgrade the target to {Convert.ToString(comparisonInfo.SourceCompatibilityLevel)} and allow the comparison?", comparisonInfo.AppName, System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
returnTabularComparison.TargetTabularModel.Connect();
returnTabularComparison.TargetTabularModel.TomDatabase.CompatibilityLevel = comparisonInfo.SourceCompatibilityLevel;
diff --git a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs
index 2ff09e5..50f288d 100644
--- a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs
+++ b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs
@@ -892,24 +892,33 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Role && comparisonObject.MergeAction == MergeAction.Delete)
{
- _targetTabularModel.DeleteRole(comparisonObject.TargetObjectInternalName);
- OnValidationMessage(new ValidationMessageEventArgs($"Delete role [{comparisonObject.TargetObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ if (DesktopHardened(comparisonObject, ValidationMessageType.Role))
+ {
+ _targetTabularModel.DeleteRole(comparisonObject.TargetObjectInternalName);
+ OnValidationMessage(new ValidationMessageEventArgs($"Delete role [{comparisonObject.TargetObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ }
}
}
foreach (ComparisonObject comparisonObject in _comparisonObjects)
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Role && comparisonObject.MergeAction == MergeAction.Create)
{
- _targetTabularModel.CreateRole(_sourceTabularModel.Roles.FindById(comparisonObject.SourceObjectInternalName).TomRole);
- OnValidationMessage(new ValidationMessageEventArgs($"Create role [{comparisonObject.SourceObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ if (DesktopHardened(comparisonObject, ValidationMessageType.Role))
+ {
+ _targetTabularModel.CreateRole(_sourceTabularModel.Roles.FindById(comparisonObject.SourceObjectInternalName).TomRole);
+ OnValidationMessage(new ValidationMessageEventArgs($"Create role [{comparisonObject.SourceObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ }
}
}
foreach (ComparisonObject comparisonObject in _comparisonObjects)
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Role && comparisonObject.MergeAction == MergeAction.Update)
{
- _targetTabularModel.UpdateRole(_sourceTabularModel.Roles.FindById(comparisonObject.SourceObjectInternalName), _targetTabularModel.Roles.FindById(comparisonObject.TargetObjectInternalName));
- OnValidationMessage(new ValidationMessageEventArgs($"Update role [{comparisonObject.TargetObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ if (DesktopHardened(comparisonObject, ValidationMessageType.Role))
+ {
+ _targetTabularModel.UpdateRole(_sourceTabularModel.Roles.FindById(comparisonObject.SourceObjectInternalName), _targetTabularModel.Roles.FindById(comparisonObject.TargetObjectInternalName));
+ OnValidationMessage(new ValidationMessageEventArgs($"Update role [{comparisonObject.TargetObjectName}].", ValidationMessageType.Role, ValidationMessageStatus.Informational));
+ }
}
}
@@ -1241,6 +1250,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource && comparisonObject.MergeAction == MergeAction.Delete)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.DataSource))
+ {
+ return;
+ };
+
//Check any objects in target that depend on the DataSource are also going to be deleted
List warningObjectList = new List();
bool toDependencies = HasBlockingToDependenciesInTarget(comparisonObject.TargetObjectName, CalcDependencyObjectType.DataSource, ref warningObjectList);
@@ -1250,7 +1264,7 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
foreach (Partition partition in table.TomTable.Partitions)
{
- if (partition.SourceType == PartitionSourceType.Query &&
+ if (partition.SourceType == PartitionSourceType.Query &&
table.DataSourceName == comparisonObject.TargetObjectName)
{
foreach (ComparisonObject comparisonObjectToCheck in _comparisonObjects)
@@ -1303,6 +1317,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource && comparisonObject.MergeAction == MergeAction.Create)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.DataSource))
+ {
+ return;
+ };
+
_targetTabularModel.CreateDataSource(_sourceTabularModel.DataSources.FindByName(comparisonObject.SourceObjectName));
OnValidationMessage(new ValidationMessageEventArgs($"Create data source [{comparisonObject.SourceObjectName}].", ValidationMessageType.DataSource, ValidationMessageStatus.Informational));
}
@@ -1312,6 +1331,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.DataSource && comparisonObject.MergeAction == MergeAction.Update)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.DataSource))
+ {
+ return;
+ };
+
DataSource sourceDataSource = _sourceTabularModel.DataSources.FindByName(comparisonObject.SourceObjectName);
DataSource targetDataSource = _targetTabularModel.DataSources.FindByName(comparisonObject.TargetObjectName);
@@ -1335,6 +1359,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression && comparisonObject.MergeAction == MergeAction.Delete)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Expression))
+ {
+ return;
+ };
+
//Check any objects in target that depend on the expression are also going to be deleted
List warningObjectList = new List();
if (!HasBlockingToDependenciesInTarget(comparisonObject.TargetObjectName, CalcDependencyObjectType.Expression, ref warningObjectList))
@@ -1358,6 +1387,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression && comparisonObject.MergeAction == MergeAction.Create)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Expression))
+ {
+ return;
+ };
+
//Check any objects in source that this expression depends on are also going to be created if not already in target
List warningObjectList = new List();
if (!HasBlockingFromDependenciesInSource(
@@ -1388,6 +1422,11 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Expression && comparisonObject.MergeAction == MergeAction.Update)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Expression))
+ {
+ return;
+ };
+
//Check any objects in source that this expression depends on are also going to be created if not already in target
List warningObjectList = new List();
if (!HasBlockingFromDependenciesInSource(
@@ -1425,6 +1464,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
Table targetTable = _targetTabularModel.Tables.FindByName(comparisonObject.TargetObjectName);
bool isCalculationGroup = false;
if (targetTable != null) isCalculationGroup = targetTable.IsCalculationGroup;
+ if (!isCalculationGroup && !DesktopHardened(comparisonObject, ValidationMessageType.Table))
+ {
+ return;
+ };
_targetTabularModel.DeleteTable(comparisonObject.TargetObjectName);
OnValidationMessage(new ValidationMessageEventArgs($"Delete {(isCalculationGroup ? "calculation group" : "table")} '{comparisonObject.TargetObjectName}'.", ValidationMessageType.Table, ValidationMessageStatus.Informational));
}
@@ -1473,6 +1516,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
}
else
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Table))
+ {
+ return;
+ };
_targetTabularModel.CreateTable(sourceTable);
OnValidationMessage(new ValidationMessageEventArgs($"Create table '{comparisonObject.SourceObjectName}'.", ValidationMessageType.Table, ValidationMessageStatus.Informational));
}
@@ -1528,6 +1575,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
}
else
{
+ if (!tableSource.IsCalculationGroup && !DesktopHardened(comparisonObject, ValidationMessageType.Table))
+ {
+ return;
+ };
_targetTabularModel.UpdateTable(tableSource, tableTarget, out string retainPartitionsMessage);
OnValidationMessage(new ValidationMessageEventArgs($"Update {(tableSource.IsCalculationGroup ? "calculation group" : "table")} '{comparisonObject.TargetObjectName}'. {retainPartitionsMessage}", ValidationMessageType.Table, ValidationMessageStatus.Informational));
}
@@ -1554,6 +1605,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Relationship && comparisonObject.MergeAction == MergeAction.Delete)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Relationship))
+ {
+ return;
+ };
foreach (Table tableTarget in _targetTabularModel.Tables)
{
Relationship relationshipTarget = tableTarget.Relationships.FindByName(comparisonObject.TargetObjectName.Trim());
@@ -1574,6 +1629,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Relationship && comparisonObject.MergeAction == MergeAction.Create)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Relationship))
+ {
+ return;
+ };
Table tableSource = _sourceTabularModel.Tables.FindByName(tableName);
Table tableTarget = _targetTabularModel.Tables.FindByName(tableName);
Relationship relationshipSource = tableSource.Relationships.FindByInternalName(comparisonObject.SourceObjectInternalName);
@@ -1595,6 +1654,10 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
if (comparisonObject.ComparisonObjectType == ComparisonObjectType.Relationship && comparisonObject.MergeAction == MergeAction.Update)
{
+ if (!DesktopHardened(comparisonObject, ValidationMessageType.Relationship))
+ {
+ return;
+ };
Table tableSource = _sourceTabularModel.Tables.FindByName(tableName);
Table tableTarget = _targetTabularModel.Tables.FindByName(tableName);
Relationship relationshipSource = tableSource.Relationships.FindByInternalName(comparisonObject.SourceObjectInternalName);
@@ -1763,6 +1826,20 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
#endregion
+ private bool DesktopHardened(ComparisonObject comparisonObject, ValidationMessageType validationMessageType)
+ {
+ if (_targetTabularModel.ConnectionInfo.UseDesktop && _targetTabularModel.ConnectionInfo.ServerMode == Microsoft.AnalysisServices.ServerMode.SharePoint)
+ {
+ //V3 hardening
+ OnValidationMessage(new ValidationMessageEventArgs($"Unable to {comparisonObject.MergeAction.ToString().ToLower()} {comparisonObject.ComparisonObjectType.ToString()} {comparisonObject.TargetObjectName} because target is Power BI Desktop, which does not yet support modifications for this object type.", validationMessageType, ValidationMessageStatus.Warning));
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+
///
/// Update target tabular model with changes defined by actions in ComparisonObject instances.
///
diff --git a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularObject.cs b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularObject.cs
index 287d65a..1e9a140 100644
--- a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularObject.cs
+++ b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularObject.cs
@@ -41,16 +41,16 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
_objectDefinition = token.ToString(Formatting.Indented);
}
- //todo: remove with Giri's fix
- //Remove return characters
- if (namedMetaDataObject is Tom.NamedExpression || namedMetaDataObject is Tom.Table)
- {
- _objectDefinition = _objectDefinition.Replace("\\r", "");
- }
+ ////todo: remove with Giri's fix
+ ////Remove return characters
+ //if (namedMetaDataObject is Tom.NamedExpression || namedMetaDataObject is Tom.Table)
+ //{
+ // _objectDefinition = _objectDefinition.Replace("\\r", "");
+ //}
//Order table columns
if (namedMetaDataObject is Tom.Table)
- {
+ {
if (((Tom.Table)namedMetaDataObject).CalculationGroup != null)
{
JToken token = JToken.Parse(_objectDefinition);
diff --git a/BismNormalizer/BismNormalizer/app.config b/BismNormalizer/BismNormalizer/app.config
index 6a55175..a18ec4c 100644
--- a/BismNormalizer/BismNormalizer/app.config
+++ b/BismNormalizer/BismNormalizer/app.config
@@ -95,7 +95,7 @@
-
+
diff --git a/BismNormalizer/BismNormalizer/packages.config b/BismNormalizer/BismNormalizer/packages.config
index c4786a8..d6ad1f8 100644
--- a/BismNormalizer/BismNormalizer/packages.config
+++ b/BismNormalizer/BismNormalizer/packages.config
@@ -27,7 +27,7 @@
-
+
\ No newline at end of file
diff --git a/BismNormalizer/BismNormalizer/source.extension.vsixmanifest b/BismNormalizer/BismNormalizer/source.extension.vsixmanifest
index 866a281..5e83560 100644
--- a/BismNormalizer/BismNormalizer/source.extension.vsixmanifest
+++ b/BismNormalizer/BismNormalizer/source.extension.vsixmanifest
@@ -1,7 +1,7 @@
-
+
BISM Normalizer
BISM Normalizer manages Analysis Services tabular models
http://bism-normalizer.com/