【问题标题】:Confusing DLL Usage in WinFormsWinForms 中令人困惑的 DLL 使用
【发布时间】:2011-08-09 17:09:52
【问题描述】:

我有一个 WinForms 项目和解决方案,一些类库项目也添加到同一个解决方案中。

WinForms 项目使用类库中的代码。我已经使用这个应用程序大约一年了,它一直运行良好。

但是,今天,我向类库添加了一些功能,但这些更改并未出现在正在运行的应用程序中。我还尝试向其中一个类添加一个新的公共方法,但该方法没有出现在应用程序的 Intellisense 中。

这应该很容易解决,但是由于 WinForms 在后台自动复制 DLL,我不知道问题出在哪里。我所看到的一切对我来说似乎都是正确的。该代码继续工作,因为它认为它使用的是旧版本的 DLL。但是我的 WinForms 应用程序 Bin 目录中的 DLL 有今天的日期。

任何人都可以就我应该在哪里寻找解决方案提出建议吗?

【问题讨论】:

    标签: .net winforms dll class-library


    【解决方案1】:

    我会进入项目属性,删除引用,重新添加它以验证您的 dll 来自您认为的位置。清理并重建项目

    【讨论】:

    • 谢谢,但我发现整个过程设计不佳。设置参考的正确方法是什么?我是引用项目还是编译的 DLL?调试版本与发布版本的答案是否会发生变化?
    • 如果您正在积极修改包含的项目,请将其添加为项目参考。
    【解决方案2】:

    根据Michael's answer,您可能会发现程序集引用实际上不是项目引用,而是指向不是您编译到的路径的特定路径(例如 bin\Release)。

    此外,这可能听起来微不足道,但是当您使用 Build 函数时,请仔细检查您的解决方案的配置属性是否真的在构建项目!我关闭了项目的构建只是忘记了我这样做了,然后当他们的更改不在我的应用程序中时我感到困惑!

    【讨论】:

    • 谢谢,但我发现整个过程设计得很糟糕。设置参考的正确方法是什么?我是引用项目还是编译的 DLL?调试版本与发布版本的答案是否会发生变化?
    • 如果您将代码作为解决方案的一部分,那么您应该使用项目参考,因为它可以确保您在构建类型之间不会有任何问题。虽然有一个额外的缺点,它可能会增加你的编译时间。好处是,如果任何依赖项发生更改,您的依赖项将自动重建。
    【解决方案3】:

    您是否将任何类库放入 GAC 中?

    如果 GAC 中有一个具有相同 AssemblyVersion 的强名称程序集,则将使用它而不是您的解决方案中的那个。

    【讨论】:

    • 我很确定我没有。但是,话又说回来,整个布局似乎被精心设计成一个黑匣子,对不经意的观察者来说是一个完全的谜。
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2022-01-21
    • 2022-01-17
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2016-11-23
    相关资源
    最近更新 更多