繁体   English   中英

SSRS 自定义程序集:构建错误添加 netstandard

[英]SSRS custom assembly: build error add netstandard

我有一份在 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

请注意:Bar 是类的引用名称

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

[rsCompilerErrorInCode] 自定义代码的第 3 行有错误 [VC30007] Referene required to assmebly netstandard .... 包含基类 System.Enum 将一个添加到您的项目中。

[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 lib 测试了我自己的理智,似乎 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 的引用 - 这是 Barcode 库所必需的。

据我所知,在某些时候,开发人员更改了对.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\\

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM