首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS 2016自定义程序集部署无法工作

SSRS 2016自定义程序集部署无法工作
EN

Stack Overflow用户
提问于 2017-07-21 17:14:31
回答 3查看 2.2K关注 0票数 4

我有一个使用C#编写的非常简单的自定义程序集,该程序集正在部署到版本13.0.4435.0中,在Windows10框上运行Server 2016 (SP1-CU3) (KB4019916)。

下面是这个"Hello“自定义程序集的C#代码:

代码语言:javascript
复制
Namespace MyCustomAssembly
{
    public class HellowWorldClass
    {
        public static string HellowWorld()
        {
            return "Hello World!";
        }
    }
}

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

代码语言:javascript
复制
https://learn.microsoft.com/en-us/sql/reporting-services/custom-assemblies/deploying-a-custom-assembly

按照流程中的步骤,我发现的第一件事是报表设计器默认目录不同。在尝试各种文件夹之后,工作的目标如下:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\SSRS

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

根据该过程,要在服务器上部署自定义程序集,应将DLL放置在以下目的地,并根据特定的SSRS版本进行调整:

代码语言:javascript
复制
C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Reporting Services\ReportServer\bin

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

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

代码语言:javascript
复制
The definition of the report '/HelloWorldReport' is invalid.

如果删除自定义程序集中对HelloWorld函数的引用的textbox,则报表将成功部署到服务器。因此,虽然消息中没有关于报表无效的进一步信息,但它似乎与服务器上的自定义程序集相关联。

以下是我尝试过的:

  • 尽管没有按照流程的要求,我仍然继续编辑rssrvpolicy.config,将"FullTrust“授予程序集。重新启动服务器。
  • 我读到SSRS基于.NET 3.5 (我用4.5.1构建了程序集),需要在.NET 3.5上构建库才能工作。自定义程序集生成被更改为使用.NET 3.5。
  • 确保服务器框上安装了.NET 3.5 (以及依赖项.NET 3.0和2.0)。这是个很长的机会。
  • 查看了有关创建和部署自定义程序集的各种其他教程和视频。所有这些似乎都表明,在这种情况下,所有必需的是将DLL放置在服务器上的适当目录中。
  • 在服务器上的其他各种目录中复制自定义程序集DLL。这样的想法是,如果VS2017出错,可能服务器目录也会出错。
  • 我查了一下组装安全。完成了DLL的签名过程。使用gacutil将自定义程序集安装到GAC中。
  • 在另一个绝望的努力中,我在服务器上安装了VS2017社区,并在服务器上创建了一个简单的报表和自定义程序集。与以前一样,VS2017报告预览正确显示自己,服务器部署失败。

上述任何努力都不起作用。

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

这是我第一次接触社会各界人士。我一般都很保守,有点犹豫。然而,事实证明,从过去的发展挑战中,其他人的经验是宝贵的,我对此表示感谢。但这次我真的很困惑。似乎没有人有过这种我能找到的确切经验,而且我已经彻底地寻找过了。我一点也不担心这个解决方案是一个简单的疏忽,还是一些值得嘲笑的基本无知。我只需要一个对别人来说似乎不成问题的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-24 19:59:18

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

票数 0
EN

Stack Overflow用户

发布于 2020-03-16 11:41:10

有关解决方案,请参考以下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

票数 1
EN

Stack Overflow用户

发布于 2020-07-28 09:53:50

只是遇到了和这里描述的一样的问题。

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

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

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7
\IDE\CommonExtensions\Microsoft\SSRS

并能够部署报告:

代码语言:javascript
复制
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7
\IDE\PrivateAssemblies

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45243242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档