由于旧的程序集引用,无法在 VS2012 中加载 Winforms 设计器
Posted
技术标签:
【中文标题】由于旧的程序集引用,无法在 VS2012 中加载 Winforms 设计器【英文标题】:Unable to load Winforms designer in VS2012 due to old assembly reference 【发布时间】:2015-04-02 13:20:13 【问题描述】:我认为这不是 Advantage Database Server 特有的,但我最近升级到了 Advantage .NET 提供程序的新版本(现在版本为 11.10.2.21
)。
解决方案构建完美,但当我在 VS2012 设计器中加载某些 winform 时,我收到以下错误:-
无法加载文件或程序集“Advantage.Data.Provider,Version=11.10.2.1,Culture=neutral,PublicKeyToken=e33137c86a38dc06”或其依赖项之一。该系统找不到指定的文件。
版本11.10.2.1
是我在安装11.10.2.21
之前卸载的旧版本
当我尝试在 Find(整个解决方案)中找到对旧程序集的引用时,它什么也找不到。
有谁知道这个参考可以在哪里找到?我想删除它,以便继续处理我的表单。
【问题讨论】:
您没有设法完全卸载旧版本,显然旧的参考程序集仍然存在。删除程序集引用并将其添加回来,现在使用新版本。 我这样做了,但它仍然会发生。 【参考方案1】:这实际上取决于您安装它的位置。您需要找到的是您安装它的文件夹,然后在该文件夹中查找所需程序集的 .dll 文件。 (根据我的经验,这将位于 lib/library 文件夹中,但您的结果可能会有所不同)一旦找到 .dll 文件,请注意它的完整文件路径。然后在尝试添加新引用时导航到该文件路径并添加 .dll 文件
【讨论】:
这没有任何区别。我不想找到旧的 .DLL 文件。它应该选择新版本,但我找不到表单/设计器存储旧参考的位置,以便我可以将其删除/编辑为新参考。 我不是建议您找到旧版本,如果您卸载旧版本,.dll 可能已被删除。我是说找到新的 .dll,然后将其添加为参考 您好,我已经添加了对新版本dll的引用并卸载了旧的,但问题仍然存在。 您是否从项目中删除了旧的引用? 是的。据我所知,即从引用树节点中删除。【参考方案2】:使用不同的 grep 工具(如 Notepad++)并在项目的所有 resx 文件中搜索文本(或其一部分)
Advantage.Data.Provider,版本=11.10.2.1,文化=中性,PublicKeyToken=e33137c86a38dc06
卸载旧版本并安装新版本后,这些引用可能没有得到更新。 推荐的解决方案是找到所有这些条目并将它们替换为该文本的新版本(可通过打开具有新版本控件的表单的 .resx 文件来查看)
【讨论】:
好声音。我已经检查并将所有对 11.10.2.1 的引用更改为 11.10.2.21 (文化和 publickeytoken 相同),但我仍然得到相同的错误。我也检查并更改了隐藏文件。它可能是一个注册表项吗? 11.10.2.1 版本的 GAC 中也没有任何内容。我想不出引用可能在哪里。 我也在注册表中搜索过,没有那个版本的条目。 查看异常的堆栈跟踪,这可能有助于确定该引用的位置或位置。此外,您可以使用 ProcMon 尝试查看它在哪里寻找该 dll【参考方案3】:终于明白了!
我使用 DevExpress 控件,他们在其 XPO 产品中引用了该版本的 Advantage Database Server(我不直接使用)。
哇!
【讨论】:
以上是关于由于旧的程序集引用,无法在 VS2012 中加载 Winforms 设计器的主要内容,如果未能解决你的问题,请参考以下文章
DLL 无法在 windows server 2012 中加载
DotNetOpenAuth.Asp 无法在 MVC4 应用程序单元测试中加载程序集或其依赖项之一