【问题标题】:C# library is not automatically updated. Compile succeeded but auto-complete failedC# 库不会自动更新。编译成功但自动完成失败
【发布时间】:2015-01-14 10:46:31
【问题描述】:

我有一个控制台应用程序 AppB 引用的库 LibA。 LibA 和 AppB 不在同一个解决方案中。我通过将新的静态方法 MethodC 添加到 ClassD 并重新编译 LibA 来修改 LibA。然后我尝试在 AppB 中使用 MethodC。编辑器中的自动完成失败,即在我输入“ClassD.”后,我在自动完成列表中找不到 MethodC。好吧,没问题,尽管如此,我仍然继续输入“MethodC”并编译。不知怎的,它成功了!但在编辑器的代码下方有一条红线,表示代码有问题。但是怎么编译成功了。而我打开对象浏览器,LibA还是老版本。即使在我删除引用并重新引用 LibA 之后,我也得到了相同的结果。

如何使用 LibA 中的新方法?正确的步骤是什么?谢谢。

【问题讨论】:

  • 开始清理 AppB 的解决方案,然后一定要引用正确的程序集(注意你是如何编译 LibA,Release vs Debug x86 vs AnyCpu,这里有什么不同和你编译的 LibA.DLL 以不同的文件夹,您的 AppB 仍然可以引用不同文件夹中的版本。)
  • 问题通过重启VS解决。我认为原因应该是VS卡住了(什么鬼!我们买了专业版)。非常感谢您的所有回答。实际上所有配置都已正确设置,包括构建路径、Release Vs Debug x86 Vs AnyCpu(实际上我使用的是 Release 和 AnyCpu)。我发现当我删除 LibA\bin\Release\ 中的 LibA.XML 时,它很快就会自动出现!不知道是我的电脑问题还是VS的问题。
  • 默认情况下,如果一切正常,我重建LibA后,应该可以立即在AppB.cs中使用新方法MethodC,而无需执行任何操作。实际上,在我重新启动 VS 后,它的行为符合预期。

标签: c# autocomplete


【解决方案1】:

它可能无法正常工作的原因有两个。

1.您已将已编译的 DLL 作为一个特定磁盘路径的依赖项引用,但现在正在编译到不同的位置。如果您开始使用 AnyCpu、x86、x64 目标,则可能会发生这种情况。它们通常将输出从默认更改为特定于目标平台的输出。

  1. 第二个原因是您忘记在 DLL 的构建配置中勾选“构建”复选框,该 DLL 不再更新。检查 Release 和 Debug 模式,因为它可以在一个中设置,但在另一个中清除。

最好的起点是检查您的依赖项编译到哪个文件夹。为此,您可以右键单击项目,单击“属性”,然后选择“构建”选项卡,然后查找“目标文件夹”属性。

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 2015-08-20
    • 2015-06-26
    • 1970-01-01
    • 2011-07-08
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多