代码之家  ›  专栏  ›  技术社区  ›  wjknoxjr

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

  •  4
  • wjknoxjr  · 技术社区  · 7 年前

    我用VS2017编写了一个非常简单的自定义程序集,该程序集被部署到Windows 10机器上运行SQL Server 2016(SP1-CU3)(KB4019916)的Microsoft SQL Server Reporting Services 13.0.4435.0版本。

    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 Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\SSRS
    

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

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

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

    当我试图通过右键单击VS2017解决方案浏览器中的报告并选择“部署”将报告部署到serer时,我收到以下消息(仅此文本):

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

    • 确保服务器盒上安装了.NET 3.5(以及依赖项.NET 3.0和2.0)。这是一个漫长的过程。
    • 回顾了有关自定义部件的创建和部署的各种其他教程和视频。所有这些似乎都表明,在这种情况下,所需的只是将DLL放置在服务器上的适当目录中。
    • 在服务器上的其他目录中复制了自定义程序集DLL。我们的想法是,如果VS2017出错,那么服务器目录也可能出错。
    • 我调查了集会安全。已完成DLL的签名过程。使用gacutil将自定义程序集安装到GAC中。
    • 在另一个绝望的努力中,我在服务器上安装了VS2017社区,并在服务器上创建了一个简单的报告和自定义程序集。与之前一样,VS2017报告预览正确呈现,服务器部署失败。

    上述努力均无效。

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

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

    3 回复  |  直到 7 年前
        1
  •  1
  •   Shwabster    4 年前

    请参阅以下URL以获取解决方案:

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

    将自定义DLL复制到此文件夹 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies

        2
  •  0
  •   Jesse    7 年前

    一种有效的解决方案是使用报表管理器添加报表,而不是从Visual Studio部署。

        3
  •  0
  •   F. Müller Dheeraj Singh    4 年前

    只是遇到了和这里描述的相同的问题。

    为了使DLL在开发过程中工作:

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

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

    ReportServer\Bin 文件夹

    此外,我也看到过关于汇编必须是.NET4.0的帖子,但我不是这样的……我的是3.5