SSRS定制程序集:生成错误,添加netstandard

问题描述 投票:0回答:1

我在Visual Studio 2017 Community Edition上有使用SQL的报告。我有一个自定义库程序集,该程序集用于从数据字段生成条形码作为图像。该程序集需要DLL文件和Systems.Drawing程序集。我添加了这两个并输入了一些代码:

Public Function Convert(Text As String) As Byte()
       Dim b As System.Drawing.Bitmap
    '   Dim bar As New BarcodeLib.Barcode
       bar.Alignment = BarcodeLib.AlignmentPositions.TOPCENTER
       bar.IncludeLabel = False
       bar.RotateFlipType = Drawing.RotateFlipType.RotateNoneFlipNone
       b = bar.Encode(BarcodeLib.TYPE.CODE39Extended, Text, 400, 30)
       Dim bitmapData As Byte() = Nothing
       Using ms As New System.IO.MemoryStream()
           b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
           bitmapData = ms.ToArray()
       End Using
       Return bitmapData
   End Function

请注意:栏是课程的参考名称

当我尝试使用或不使用条形码生成来预览或生成报告时,它将失败。错误是:

[[rsCompilerErrorInCode]在自定义代码[VC30007]的第3行上出错,组装包含基类System.Enum的netstandard ....需要引用。将一个添加到您的项目中。

[[rsCompilerErrorInClassInstanceDeclaration]组装netstandard所需的引用,其中包含默认类System.Object,将一个添加到您的项目中。

据我所知,您不能仅添加这些,因为SSRS似乎没有任何NuGet或程序包支持,因此我无法这样做。

我在服务器上的几乎所有可能位置都列出了该条形码dll,我的程序文件,MSbuild,服务器上的Reporting Services bin文件夹,IDE公共和私有。我确实尝试仅从MSBuild加载以获取程序集引用与程序集清单版本不匹配。即使它们是相同的。我确实尝试在C#中编辑代码以包括for netstandard,即使它通过该项目上的nuget连接。

我期望图像使用= Code.Convert(TEXT)或= Code.Convert(databasefield)进行转换,但到目前为止还不行。即使没有图像或未引用代码本身,也会首先生成构建错误。

c# reporting-services .net-assembly .net-standard
1个回答
0
投票

我刚刚遇到了相同的错误,并且使用了完全相同的库BarcodeStandard.dll。我出于自身的判断,使用“ hello world” .Net Standard库进行了测试,看来SSRS不支持.Net Standard库。 .Net Framework 4.6.2中等效的“ hello world”库在服务器上运行时没有任何问题。

我的解决方案是在.Net Framework 4.6.2中重写BarcodeStandard库;当部署在服务器上时,此解决方案对我们有效。在Visual Studio 2019中预览报表时,它仍然不起作用,但这是一个小问题。

© www.soinside.com 2019 - 2024. All rights reserved.