<Files> xmla 中缺少用于部署程序集的标记



我正在尝试将自定义.NET程序集部署到我的SSAS数据库中。在这样做的时候,我面临着Clr Assembly必须有主文件指定的错误,并且按照标记的答案更改目标框架并没有解决它。

我还检查了dll是否如这里所示被阻止,但由于它是由我正在使用的同一系统编译的,因此不需要取消阻止,因此该选项甚至不会出现在程序集文件的属性中。

我尝试使用SQL Server Data Tools 2012和SQL Server Management Studio 2012进行部署,但出现了相同的错误。我检查了SSMS用于部署它的XMLA脚本,结果发现<Files>标记(通常包含汇编文件的二进制数据)丢失了。这可能意味着SSMS和VS无法读取程序集的二进制内容。

虽然dll不在网络上,而是在本地机器上,但我尝试了这里给出的解决方法,但它也不起作用,因为我一开始无法部署dll,以后可以ALTER

有什么我遗漏的吗?

我设法找到了解决方法。我使用以下C#代码来获取程序集文件的二进制数据。

Convert.ToBase64String(File.ReadAllBytes(@"PathToAssembly.dll"))

然后,我手动向XMLA脚本添加了一个<Files>标记,以及上面函数返回的二进制数据。在执行修改后的XMLA脚本后,程序集现在已成功部署。

这就是我的<Files>标签的样子。

<Files>
    <File>
       <Name>Assembly.dll</Name>
       <Type>Main</Type>
       <Data>
          <Block>
               <!-- Binary Data Obtained After Base64 Encoding -->
          </Block>
       </Data>
    </File>
</Files>

最新更新