gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:28:09 25 4
gpt4 key购买 nike

我的 .Net Framework WinForms 应用构建无误,运行无误。

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

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

'无法加载文件或程序集 'MyEventArgs,Version=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设计器中双击打开目标用户控件。

首先我得到一个异常

The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

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

我在调试器中点击继续,然后得到这个异常

'Could not load file or assembly 'MyEventArgs, Version=1.0.6896.23135, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.'

=== Pre-bind state information === LOG: DisplayName = MyEventArgs, Version=1.0.6896.23135, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/ LOG: Initial PrivatePath = NULL Calling assembly : (Unknown). === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Users\Adam\AppData\Local\Microsoft\VisualStudio\15.0_fdc9bc52\devenv.exe.config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: The same bind was seen before, and was failed with hr = 0x80070002.

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

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

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

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

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

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

最佳答案

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

异常是由于我最近修改了我的解决方案,将许多项目引用更改为引用库文件夹中的 DLL,而不是同一解决方案中的其他项目。

例如,我有许多包含简单接口(interface) (IDoStuff) 的项目。我想这些不会经常改变,所以也许引用 DLL 会稍微加快编译过程。

我认为发生的事情是我编译了 MyEventArgs,创建了 1.0.6896.23135 版本,然后编译了依赖于 MyEventArgs 的其他类,然后将这些 DLL 放入我的库文件夹中。那么我一定是重新编译了 MyEventArgs,并在 Libraries 文件夹中存储了一个更新的版本。

我假设如果我将我所有的项目引用都设置为不需要特定版本,它就会正常工作。

我花了几个小时在项目文件中寻找“1.0.6896.23135”引用,清理 bin 文件夹等。

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

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

关于c# - 在设计器中打开自定义用户控件时,Visual Studio Professional 15.9.2 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com