我在Visual Studio 2017社区版上有一个使用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 .... net时需要引用。
[rsCompilerErrorInClassInstanceDeclaration]组装netstandard所必需的引用,其中包含默认类System.Object,将一个添加到您的项目中。
据我所知,您不能仅添加这些,因为SSRS似乎没有任何NuGet或程序包支持,因此我无法这样做。
我在服务器上几乎所有可能的位置列出了此条形码dll,我的程序文件,MSbuild,服务器上的Reporting Services bin文件夹,IDE公共和私有。 我确实尝试仅从MSBuild加载以获取程序集引用与程序集清单版本不匹配。即使它们是相同的。 我确实尝试在C#中编辑代码以包括for netstandard,即使该代码通过该项目上的nuget连接。
我期望图像使用= Code.Convert( TEXT )或= Code.Convert(databasefield)进行转换,但并没有达到目标。即使没有图像或未引用代码本身,也会首先生成构建错误。
答案 0 :(得分: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中预览报表时仍然无法使用,但这是一个小问题。
编辑:在VS2019中进行预览或尝试在SSRS服务器上部署/运行报告时出现了“无法加载文件或程序集”错误,但在构建过程中却没有。 另外,不要忘记在报表中添加对System.Drawing v4.0.0.0的引用-这是条形码库所必需的。
答案 1 :(得分:0)
据我所知,在某些时候,开发人员更改了对 .NET Standard
的引用,我也无法在报告中找到引用它的方法。 @Fgaudet
的好主意,用 .NET Frameword 4.6.2
重写它以便在 SSRS
中使用。
过去我使用旧版本的 BarcodeLib - 2.2.5
,它仅适用于 System.Drawing v2.0.0.0
参考。
顺便说一句。如果在VS2019中无法预览报表,请尝试将.dll放入
<块引用>c:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies\
以及
<块引用>c:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\SSRS\