我有一个使用C#编写的非常简单的自定义程序集,该程序集正在部署到版本13.0.4435.0中,在Windows10框上运行Server 2016 (SP1-CU3) (KB4019916)。
下面是这个"Hello“自定义程序集的C#代码:
Namespace MyCustomAssembly
{
public class HellowWorldClass
{
public static string HellowWorld()
{
return "Hello World!";
}
}
}Microsoft描述了一个逐步部署自定义程序集的过程:
https://learn.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然后,该过程描述了扩展自定义程序集权限的步骤,但是这个简单的示例不应该要求这样做。执行权限应该足够了。因此,rssrvpolicy.config的修改应该是不必要的。
当我试图通过右键单击VS2017的解决方案资源管理器中的报表并选择" deploy“将报告部署到服务器时,我会得到以下消息(只有本文):
The definition of the report '/HelloWorldReport' is invalid.如果删除自定义程序集中对HelloWorld函数的引用的textbox,则报表将成功部署到服务器。因此,虽然消息中没有关于报表无效的进一步信息,但它似乎与服务器上的自定义程序集相关联。
以下是我尝试过的:
上述任何努力都不起作用。
我可以共享RDL文件或其他可能有助于识别问题的材料,但我不认为问题与报表定义有关,因为如果删除了对自定义程序集中的函数的引用,报表将进行部署。我不认为这个问题与自定义程序集有关,因为预览在VS2017环境中工作。必须与服务器有关,但错误消息非常不透明。
这是我第一次接触社会各界人士。我一般都很保守,有点犹豫。然而,事实证明,从过去的发展挑战中,其他人的经验是宝贵的,我对此表示感谢。但这次我真的很困惑。似乎没有人有过这种我能找到的确切经验,而且我已经彻底地寻找过了。我一点也不担心这个解决方案是一个简单的疏忽,还是一些值得嘲笑的基本无知。我只需要一个对别人来说似乎不成问题的解决方案。
发布于 2017-07-24 19:59:18
一个行之有效的解决方案是使用报表管理器添加报表,而不是从Visual部署报表。
发布于 2020-03-16 11:41:10
有关解决方案,请参考以下URL:
将自定义DLL复制到开发人员计算机上的此文件夹C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies。
发布于 2020-07-28 09:53:50
只是遇到了和这里描述的一样的问题。
对我来说,问题是DLL必须位于部署报表的机器上的两个文件夹中:
为使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当然,在服务器上,DLL也必须位于ReportServer\Bin文件夹中。
另外,我也看到过关于程序集必须是.NET 4.0的帖子,但对我来说并非如此……我的是3.5
https://stackoverflow.com/questions/45243242
复制相似问题