Microsoft.AnalysisServices.Tabular.JsonScripter 指的是 Json 程序集的不存在版本

Microsoft.AnalysisServices.Tabular.JsonScripter refers to nonexisting version of Json assembly

我正在尝试调用 Powershell 中的 Microsoft.AnalysisServices.Tabular.JsonScripter 方法来自动为 SSAS 表格生成 CreateOrReplace 数据库脚本。但是,当我尝试执行以下代码时,我收到一条错误消息。

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Tabular");
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices.Core");

$tab = "<Server>";
$dbId = "<Database>";
#$saveas = "C:\temp\{0}.dax" -f $tab.Replace('\', '_');


$as = New-Object Microsoft.AnalysisServices.Tabular.Server;
$as.Connect($tab);
$db = $as.Databases[$dbId];

[Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCreateOrReplace($db);

Exception calling "ScriptCreateOrReplace" with "1" argument(s): "Could not load file or assembly 'Microsoft.AnalysisServices.Tabular.Json, Version=17.0.0.0, 
Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified."
At line:23 char:9
+         [Microsoft.AnalysisServices.Tabular.JsonScripter]::ScriptCrea ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : FileNotFoundException

我检查了我安装了哪些版本(参考这篇文章https://docs.microsoft.com/en-us/bi-reference/tom/install-distribute-and-reference-the-tabular-object-model)并在我的 GAC 文件夹中找到了这些版本。

PS C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular> Get-ChildItem


    Directory: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.AnalysisServices.Tabular


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       20.09.2018     12:45                v4.0_13.0.0.0__89845dcd8080cc91
d-----       11.09.2018     10:06                v4.0_14.0.0.0__89845dcd8080cc91
d-----       01.07.2019     16:38                v4.0_15.0.0.0__89845dcd8080cc91

根据 MS 文档,没有版本 17.0.0.0,我很困惑为什么该方法需要这个版本,据我所知不存在。

有没有人遇到过类似的错误或发现我的方法有误?

旁注:我对Powershell和.net都不精通,对这个问题的理解很基础,所以请多多包涵。

我已经通过卸载最新版本的 AMO 库并回退到以前的版本解决了这个问题。同事们 运行 使用旧版本并且可以很好地执行脚本,而我是唯一一个使用最新版本并遇到问题的人。

我仍然不确定问题的原因是什么,是库中的错误还是由于我工作的环境,但我很高兴它现在可以工作了。

所以,这有效:

v4.0_14.0.0.0__89845dcd8080cc91

这不是:

v4.0_15.0.0.0__89845dcd8080cc91