【问题标题】:Crystal Reports Code Contracts ConflictsCrystal Reports 代码合同冲突
【发布时间】:2012-04-15 10:06:29
【问题描述】:

我们有一个在 .NET 4 上使用 C# 和代码契约构建的解决方案。我们希望使用 Crystal Reports 13,但遇到了一个主要问题。

当我们尝试使用水晶报表时,出现以下异常:

未解决程序集引用:BusinessObjects.Licensing.KeycodeDecoder,Version=13.0.2000.0,Culture=neutral,PublicKeyToken=692fbea5521e1304。

当 Code Contracts 运行时检查被禁用(未选中)时,不会发生此异常;但代码合同抱怨必须启用重写器。不幸的是,代码库中充斥着Contract.Requires<TException>(bool) 调用,如果更改为 if-then-throws 样式将是一场噩梦。

有没有其他人遇到过这种不兼容的情况?如果是这样,他们是如何克服的?

谢谢

【问题讨论】:

    标签: c# .net-4.0 crystal-reports code-contracts


    【解决方案1】:

    您是否尝试向 ContractProperties 添加一个额外的库路径,该路径指向您机器上包含丢失的 dll 的目录?重写器有时会比 C# 编译器追逐更多的引用,从而导致这个问题浮出水面。

    【讨论】:

    • 不幸的是,我不相信有问题的 dll 实际上包含在他们的运行时或 SDK 中。似乎他们从其他 dll 中引用了它,但实际上并没有部署它。
    • 我们也已经停止使用水晶报表,所以更新版本的库可能已经解决了这个问题。
    • 我明白了,这很糟糕。作为最后的手段,您还可以将选项 -ignoreMetadataErrors 添加到重写器选项中。如果缺少的程序集确实是一个良性错误,这应该可以让您通过重写器。
    猜你喜欢
    • 2011-10-24
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多