1

我有一个使用 .dll 的应用程序,该应用程序在位置 x 中充满了 gui 应用程序代码。它曾经有 1 个按钮,但现在有 2 个。

当我启动我的应用程序时,我希望看到一个带有 2 个按钮的 gui,但是我看到一个带有 1 个按钮的 gui。我已经重建了我的 gui .dll,但它神奇地使用了某个地方的旧版本。如果我尝试调试我的代码,它会说我使用的代码版本与 .dll 中的不同

我的问题是,“我怎样才能找到它在哪里寻找 .dll 以及为什么它会使用旧版本,因为我只有 1 个地方可以将 .dll 编译到?”

还想说明我引用了它,它是正确的版本,其中有 2 个按钮。但是当我运行它时使用的是另一个版本???

4

3 回答 3

4

If you are using Visual Studio open the Modules window, Debug->Windows->Modules (Ctrl-D+M) and this will list all loaded assemblies.

You can also at run time use AppDomain.CurrentDomain.GetAssemblies() and walk the list looking at each Assembly.CodeBase.

If all else fails you can also use ProcessMonitor from sysinternals http://technet.microsoft.com/en-us/sysinternals/bb896645 and watch which dlls are loaded by your process, but you'll be filtering out tons of output.

于 2012-08-17T10:17:37.733 回答
1

如果您正在调试,您可以打开Modules窗口(Debug > Windows > Modules)。这将向您显示加载到您的进程中的所有可执行文件,包括名称和完整路径。然后,您应该能够确定从何处加载了过期的 DLL。

于 2012-08-17T10:19:14.787 回答
0

您可以尝试在命名空间中使用反射System.Reflection

var assembly = Assembly.Load("your-assembly-name");

然后检查assembly对象的版本信息。

于 2012-08-17T10:16:19.957 回答