SSRS 2016 自定义程序集部署不工作

SSRS 2016 Custom Assembly Deployment Not Working

我有一个使用 VS2017 用 C# 编写的非常简单的自定义程序集,它正在部署到 Microsoft SQL Server Reporting Services Version 13.0.4435.0 运行 SQL Server 2016 (SP1- CU3) (KB4019916) 在 Windows 10 盒子上。

下面是此 "Hello World" 自定义程序集的 C# 代码:

Namespace MyCustomAssembly
{
    public class HellowWorldClass
    {
        public static string HellowWorld()
        {
            return "Hello World!";
        }
    }
}

Microsoft 描述了部署自定义程序集的分步过程:

https://docs.microsoft.com/en-us/sql/reporting-services/custom-assemblies/deploying-a-custom-assembly

按照流程中的步骤,我首先发现报表设计器的默认目录不同。尝试各种文件夹后,有效的目标如下:

C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\CommonExtensions\Microsoft\SSRS

将自定义程序集 DLL 存放在此目录中后,报表预览按预期工作。这验证了报告文本框中的表达式是否已正确定义。

根据流程,要在服务器上部署自定义程序集,DLL 应放置在以下目标位置,针对特定 SSRS 版本进行调整:

C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin

该过程然后描述了扩展自定义程序集权限的步骤,但这个简单的示例不应该要求这样做。执行权限应该足够了。因此不需要修改rssrvpolicy.config。

当我尝试通过右键单击 VS2017 的解决方案资源管理器中的报告并选择 "Deploy" 将报告部署到服务器时,我收到以下消息(并且只有此文本):

The definition of the report '/HelloWorldReport' is invalid.

如果我在自定义程序集中删除包含对 HelloWorld 函数的引用的文本框,则报表会成功部署到服务器。因此,虽然消息中没有关于报告无效原因的更多信息,但它似乎与服务器上的自定义程序集相关联。

这是我尝试过的:

None 上述努力奏效了。

我可以共享 RDL 文件或其他 material 可能有助于确定问题的文件,但我认为问题不在于报告定义,因为如果引用其中的函数,报告将部署自定义程序集已删除。而且我不认为问题出在自定义程序集上,因为预览在 VS2017 环境中工作。必须与服务器有关,但错误消息非常不透明。

这是我第一次接触 SO 社区。我通常很保守,有些犹豫。然而,事实证明,其他人的经验对于克服过去的发展挑战很有价值,我对此表示感谢。但是这次我真的难住了。似乎没有人有过我能找到的这种确切经历,而且我已经进行了详尽的搜索。如果解决方案最终是一个简单的疏忽或一些值得嘲笑的基本无知,我并不担心。我只需要一个对其他人来说似乎不是问题的解决方案。

一个有效的解决方案是使用 Report Manager 添加报告而不是从 Visual Studio 部署。

参考以下URL解决方法:

https://developercommunity.visualstudio.com/content/problem/574712/rdl-deploy-error-vs-2017-ssrs-2017.html

将自定义 DLL 复制到开发人员计算机上的此文件夹 C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\PrivateAssemblies

刚刚遇到与此处所述相同的问题。

对我来说,问题是 DLL 必须位于部署报告的机器上的两个文件夹中:

为了 DLL 在开发期间工作:

C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7
\IDE\CommonExtensions\Microsoft\SSRS

并能够部署报告:

C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7
\IDE\PrivateAssemblies

当然在服务器上 DLL 也必须在 ReportServer\Bin 文件夹中

此外,我看到过有关程序集必须是 .NET 4.0 的帖子,但对我来说情况并非如此......我的是 3.5