簡體   English   中英

收集被修改; 枚舉操作可能無法在VS WinForms Designer中執行

[英]Collection was modified; enumeration operation may not execute in VS WinForms Designer

自從我們的公司內部winforms應用程序從VS2008轉換到VS2012項目后,我在使用winforms設計器時遇到了問題。

有時設計器會陷入錯誤狀態,並顯示以下錯誤消息:

“集合已被修改;枚舉操作可能無法執行。” 調用堆棧說:

Instances of this error (1)  

1.   Hide Call Stack 

at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
at System.Collections.Generic.List`1.Enumerator.MoveNextRare()
at System.Collections.Generic.List`1.Enumerator.MoveNext()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblySpecFound(List`1 assemblies, String assemblyFullName)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AddDependencies(Assembly a, String fileName)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.AssemblyEntry.get_Assembly()
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchByShortName(String partialName, String fullName, AssemblyEntry[] entries, Assembly& assembly)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchNormalEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly, Boolean fastSearch)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchEntries(AssemblyName assemblyName, String typeName, Boolean ignoreCase, Assembly& assembly, ReferenceType refType)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.SearchEntries(AssemblyName assemblyName, String typeName, Boolean ignoreTypeCase, Assembly& assembly)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.System.ComponentModel.Design.ITypeResolutionService.GetAssembly(AssemblyName name, Boolean throwOnError)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.System.ComponentModel.Design.ITypeResolutionService.GetAssembly(AssemblyName name)
at Microsoft.VisualStudio.Design.VSDynamicTypeService.OnAssemblyResolve(Object sender, ResolveEventArgs e)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)  

似乎設計者試圖更改引用的程序集列表可能是因為一些無效的程序集。 在嘗試解決問題時,我發現更改Project-> Properties-> Security下的“Enable ClickOnce Security”選項可以使設計人員恢復工作。 但是如果選項打開並且我得到設計師錯誤將其關閉並重建所有可以不時解決問題和VICE VERSA !!!! ......這就是我現在有點失落的原因。

我有同樣的問題,這讓我整天瘋狂。 原因(當然除了Visual Studio bug本身)是我的項目缺少程序集引用。 確切地說,它引用了兩個程序集A和B,其中A本身也引用了B - 但是與我使用的版本不同。 我應該引用與A引用的B相同的版本。

它歸結為:我的匯編參考不太正確。 它們足以使代碼編譯和運行得很好,但錯誤到足以使WinForms設計器崩潰。

為了找到問題,我啟動了第二個VS實例並將其調試器連接到第一個加載了我的解決方案的程序(Debug | Attach to Process)。 然后在Debug |中 例外情況,我激活了對公共語言運行時異常的打破。 現在,在我的第一個VS實例中,我雙擊該表單將其打開。

我連續多次出現異常,其中大多數都與我的代碼無關。 但其中一個是FileLoadException,聲明:“無法加載文件或程序集'XXX,版本= 3.7.0.25089,...”所以我添加了對正確版本的程序集的引用。 (並且正確地說,我的意思是最后一位數字 - WinForms設計師在組裝版本方面非常迂腐。)接下來我知道,表單打開就像一個魅力!

它似乎是一個異步Visual Studio 2012 Bug。

這是我從微軟獲得的官方郵件

來自Microsoft Connect的問候!

此通知是為反饋項生成的:VS2012 WinForms Designer不再起作用-Error:Collection已被修改; 枚舉操作可能無法執行。您在Microsoft Connect站點上提交了該枚舉操作。

感謝您的反饋意見。 此錯誤與此處報告的錯誤重復: http//connect.microsoft.com/VisualStudio/feedback/details/781193/form-designer-error-collection-was-modified-enumeration-operation-may-not-executethere請監控該問題(781193)以獲取進一步的更新。 沒有可用的解決方法,但我們正在Visual Studio的下一個版本中修復此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM