我正在尝试将自定义.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>