我在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)进行转换,但到目前为止还不行。即使没有图像或未引用代码本身,也会首先生成构建错误。
我刚刚遇到了相同的错误,并且使用了完全相同的库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中预览报表时,它仍然不起作用,但这是一个小问题。