缺少xmla中的<files>标记以部署程序集</files>

时间:2015-02-17 04:52:02

标签: dll ssas clr .net-assembly cube

我正在尝试将自定义.NET程序集部署到我的SSAS数据库。在这样做的同时,我面临Clr Assembly must have main file specified error并且更改标记答案中给出的目标框架并没有解决它。

我还检查了dll是否被阻止为here,但由于它是由我正在处理的同一系统编译的,所以它不需要被解除阻塞,所以选项甚至没有来在汇编文件的属性中。

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

虽然dll不在网络上而是在本地机器上,但我尝试了here给出的解决方法,但它无法正常工作,因为我无法在第一时间部署dll {{1稍后。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

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

Convert.ToBase64String(File.ReadAllBytes(@"Path\To\Assembly.dll"))

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

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

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