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/