我正在尝试将自定义.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稍后。
我错过了什么吗?
答案 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>