【问题标题】:.NET Unmanaged library loading: Handling error states.NET 非托管库加载:处理错误状态
【发布时间】:2011-04-27 15:45:13
【问题描述】:

我正在编写一个使用非托管库的程序。 处理可用 foo.dll 版本不兼容的情况的最佳做法是什么?

示例:用户启动程序并拥有比程序预期的旧版本的 DLL。你会尝试使用它吗,因为在成熟的库中破坏 API 更改应该是不常见的?立即出错?在程序中维护一个资源,其中包含每个使用的非托管 DLL 的下载位置? 还是认为最好将每个 DLL 包含在项目自己的文件夹中并坚持使用该文件?

目前,我使用后者,并使用新的项目版本更新 DLL,但我希望我的软件能够尽可能地容错,并且我不知道使用非托管 DLL 的任何最佳实践(除了“除非必须,否则不要使用它们”)。

【问题讨论】:

    标签: .net exception-handling unmanaged


    【解决方案1】:

    假设非托管 DLL 在编译时嵌入了版本信息,您可以在应用程序加载时使用 System.Diagnostics 中的 FileVersionInfo 类来检查兼容版本。

    如果未找到兼容版本,则提醒用户?

    http://msdn.microsoft.com/en-us/library/system.diagnostics.fileversioninfo.aspx

    【讨论】:

    • 我应该更清楚——找到 DLL 版本不是问题。问题更多是关于最佳实践,而不是具体实施。例如,是否会抛出异常,如果是,会抛出哪个异常(自定义?)。我正在尝试掌握最佳实践,但找不到一篇关于在处理非托管库时处理某些情况的好文章。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2011-08-31
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多