簡體   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