繁体   English   中英

在设计器中打开自定义用户控件时,Visual Studio Professional 15.9.2崩溃

[英]Visual Studio Professional 15.9.2 crashes when opening a custom user control in the designer

我的.Net Framework WinForms应用程序构建没有错误,运行没有错误。

当我双击打开我创建的用户控件时,VS2017 Professional 15.9.2设计器崩溃了。 这些用户控件都从名为MyUserControl的类继承。 我可以在设计器中打开MyUserControl而不会出错。

当我单独运行VS2017(没有连接调试器的第二个副本)时,当我双击目标用户控件时,我看到以下异常:

'无法加载文件或程序集'MyEventArgs,Version = 1.0.6896.23135,Culture = neutral,PublicKeyToken = null'或其依赖项之一。 该系统找不到指定的文件。'

目标用户控件不引用MyEventArgs。 将目标项目中的引用添加到MyEventArgs没有帮助。 解决方案中对MyEventArgs的所有引用都是对Libraries文件夹中的DLL的引用,而不是对项目引用的引用。

我在记事本中打开了解决方案中的每个.csproj文件。 它们都不是指MyEventArgs DLL的特定版本。

我已经清除了所有的obj和bin目录。

我已经清除了ProjectAssemblies目录。 这是一个WinForms应用程序,因此无需清除临时ASP.Net文件目录。

我启动了VS2017的第二个副本并将调试器附加到VS2017实例,我尝试在设计器中打开用户控件。 我选中了父复选框以选择中断所有CLR异常。

我双击以在第一个VS实例的VS设计器中打开目标用户控件。

首先我得到一个例外

参数不正确。 (HRESULT异常:0x80070057(E_INVALIDARG))

没有关于什么参数不正确的信息。 我查看了异常对象的所有属性。 我的DLL都没有“从Internt下载”位集。

我在调试器中单击“继续”,然后获取此异常

'无法加载文件或程序集'MyEventArgs,Version = 1.0.6896.23135,Culture = neutral,PublicKeyToken = null'或其依赖项之一。 该系统找不到指定的文件。'

===预绑定状态信息=== LOG:DisplayName = MyEventArgs,Version = 1.0.6896.23135,Culture = neutral,PublicKeyToken = null(完全指定)LOG:Appbase = file:/// C:/ Program Files( x86)/ Microsoft Visual Studio / 2017 / Professional / Common7 / IDE / LOG:Initial PrivatePath = NULL调用程序集:(未知)。 ===日志:此绑定在默认加载上下文中启动。 日志:使用应用程序配置文件:C:\\ Users \\ Adam \\ AppData \\ Local \\ Microsoft \\ VisualStudio \\ 15.0_fdc9bc52 \\ devenv.exe.config日志:使用主机配置文件:日志:使用C:\\ Windows \\ Microsoft中的计算机配置文件.NET \\框架\\ v4.0.30319 \\ CONFIG \\ machine.config中。 日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定)。 日志:之前看到过相同的绑定,并且hr = 0x80070002失败。

但是,我在任何地方都没有这个版本的MyEvents。 所有引用都是Libraries文件夹中的DLL。 此DLL有一个更新的版本。

如何让VS2017停止寻找这个旧版本的DLL?

我运行了两份AstroGrep(免费的Windows实用程序)来搜索我的C盘上的所有文件中的版本号(1.0.6896.23135)以及存储解决方案的D盘。 它没有在任何文件(csproj等)中找到此版本号的任何实例。

目标用户控件项目不引用MyEventArgs。 我检查了解决方案中的每个csproj。 所有都引用了库文件夹中的MyEventArgs.dll副本。 此副本的版本比异常中指定的版本更新。

MyEventArgs不在目标计算机上的GAC中。

VS从哪里获得这个旧版本号? 如果我知道VS正在读取这个版本号,我可以清除它或更改它。 它不能弥补这个数字,但我找不到它的存储位置。

TLDR:这是我的错,不是Visual Studio的错。 也就是说,一个更易读的异常会为我节省大量的调试时间。

这个例外的原因是我最近通过更改许多项目引用来修改我的解决方案,以引用Libraries文件夹中的DLL而不是同一解决方案中的其他项目。

例如,我有许多项目包含简单的接口(IDoStuff)。 我认为这些不经常改变,所以也许指代DLL会加快编译过程。

我相信发生的事情是我编译了MyEventArgs,创建了版本1.0.6896.23135,然后编译了依赖于MyEventArgs的其他类,然后将这些DLL放在我的Libraries文件夹中。 然后我必须重新编译MyEventArgs,并在Libraries文件夹中存储一个较新的版本。

我假设如果我将所有项目引用设置为不需要特定版本,那么它们都可以正常工作。

我花了几个小时在项目文件中查找“1.0.6896.23135”参考,清除bin文件夹等。

我现在相信对MyEventArgs特定版本的引用嵌入在我复制到Libraries文件夹的另一个DLL中。

我修改了我的解决方案,回到使用项目引用,VS设计器在打开目标用户控件时不再崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM