你怎么知道你的c#应用程序使用的是哪个dll?

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

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

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

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

如果您使用的是Visual Studio,请打开模块窗口,调试 – > Windows->模块(Ctrl-D + M),这将列出所有已加载的程序集。

您还可以在运行时使用AppDomain.CurrentDomain.GetAssemblies()并查看每个Assembly.CodeBase的列表。

如果所有其他方法都失败了,您也可以使用sysinternals中的ProcessMonitor http://technet.microsoft.com/en-us/sysinternals/bb896645并查看您的进程加载了哪些dll,但是您将过滤掉大量的输出。

如果您正在调试,可以打开“ 模块”窗口(“ 调试” >“ Windows” >“ 模块” )。 这将显示加载到您的进程中的所有可执行文件,包括名称和完整路径。 然后,您应该能够找出加载了过时DLL的位置。

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

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

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