【发布时间】:2018-11-25 09:31:43
【问题描述】:
我的 .Net Framework WinForms 应用程序构建没有错误,运行也没有错误。
当我双击打开我创建的用户控件时,VS2017 Professional 15.9.2 设计器崩溃。这些用户控件都继承自一个名为 MyUserControl 的类。我可以在设计器中打开 MyUserControl 而不会出错。
当我单独运行 VS2017 时(没有附加调试器的第二个副本),我在双击目标用户控件时看到以下异常:
'无法加载文件或程序集'MyEventArgs,版本=1.0.6896.23135,Culture=neutral,PublicKeyToken=null'或其依赖项之一。系统找不到指定的文件。'
目标用户控件不引用 MyEventArgs。在目标项目中添加对 MyEventArgs 的引用没有帮助。解决方案中对 MyEventArgs 的所有引用都是对库文件夹中 DLL 的引用,而不是项目引用。
我在记事本中打开了解决方案中的每个 .csproj 文件。它们都没有引用 MyEventArgs DLL 的特定版本。
我已经清除了所有的 obj 和 bin 目录。
我已清除 ProjectAssemblies 目录。这是一个 WinForms 应用程序,因此无需清除临时 ASP.Net 文件目录。
我启动了 VS2017 的第二个副本并将调试器附加到 VS2017 实例,我尝试在设计器中打开用户控件。我选中了父复选框以选择中断所有 CLR 异常。
我在第一个VS实例的VS设计器中双击打开目标用户控件。
首先我得到一个异常
参数不正确。 (来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))
没有关于哪个参数不正确的信息。我查看了异常对象的所有属性。我的所有 DLL 都没有设置“从 Internet 下载”位。
我在调试器中点击继续,然后得到这个异常
'无法加载文件或程序集'MyEventArgs,版本=1.0.6896.23135, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。这 系统找不到指定的文件。'
=== 预绑定状态信息 === LOG: DisplayName = MyEventArgs, Version=1.0.6896.23135, Culture=neutral, PublicKeyToken=null (完全指定)日志:Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/LOG: 初始 PrivatePath = NULL 调用程序集:(未知)。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件: C:\Users\Adam\AppData\Local\Microsoft\VisualStudio\15.0_fdc9bc52\devenv.exe.config LOG:使用主机配置文件: LOG:使用机器配置 文件来自 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config。 日志:此时未将策略应用于参考(私人, 自定义、部分或基于位置的程序集绑定)。 LOG:相同的绑定 以前见过,但失败了,hr = 0x80070002。
但是,我在任何地方都没有这个版本的 MyEvents。所有引用都指向库文件夹中的 DLL。此 DLL 有较新的版本。
如何让 VS2017 停止寻找这个旧版本的 DLL?
我运行了两个 AstroGrep(免费的 Windows 实用程序)副本,在我的 C 盘和存储解决方案的 D 盘上的所有文件中搜索该版本号 (1.0.6896.23135)。它没有在任何文件(csproj 等)中找到此版本号的任何实例。
目标用户控件项目未引用 MyEventArgs。我检查了解决方案中的每个 csproj。所有引用库文件夹中的 MyEventArgs.dll 的副本。此副本的版本比异常中指定的版本新。
MyEventArgs 不在目标机器上的 GAC 中。
VS 从哪里得到这个旧版本号?如果我知道 VS 在哪里读取此版本号,我可以清除或更改它。它不可能是这个数字,但我找不到它的存储位置。
【问题讨论】:
-
我在以前的版本中遇到过类似的问题。大多数情况下,只有重新启动 Visual Studio 或计算机有助于解决问题。我认为一旦需要进行一些更改,例如清除所有 Visual Studio 文件,然后撤消 (在 GIT 中签出以前的版本)。
-
当涉及到 WinForm Designer 问题时,最大的帮助是建议 let Visual Studio run with a debugger attached(通过另一个 VS 实例)并在出现异常时停止。
-
您是否在应用配置文件中有绑定重定向?我曾经遇到过类似的错误,原来是这个问题造成的。
-
此文件没有绑定重定向。
标签: c# visual-studio winforms