2013-05-10 12 views
7

'da yürütülemeyebilir. Şirketimiz inhouse winforms uygulamasını VS2008'den VS2012 projesine dönüştürdüğümden beri winforms tasarımcısını kullanırken sorun yaşıyorum. Koleksiyon değiştirildi; numaralandırma işlemi VS WinForms Tasarımcısı

Bazen tasarımcı aşağıdaki hata iletisini veren bir hata durumuna girer:

"Koleksiyon değiştirildi, numaralama işlemi yürütmek olmayabilir." Çağrı yığını söyleyerek:

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) 

Tasarımcı belki bazı geçersiz meclislerinin başvurulan meclislerinin listesini değiştirmeye çalışıyor gibi görünüyor. Sorunu çözmeye çalışırken, Project-> Özellikler-> Güvenlik altındaki "ClickOnce Güvenliğini Etkinleştir" seçeneğinin değiştirilmesinin tasarımcıyı işe geri getirebileceğini anladım. AMA seçeneği açıksa ve ben tasarımcı devre dışı bırakmak ve tüm zaman ve VICE VERSA zaman zaman sorunu çözmek yeniden inşa olsun !! İşte bu yüzden şu anda biraz kayboldum.

+0

Belki de önce 2010'a yükseltmeyi denemelisiniz. :/ –

+0

Koleksiyon değiştirildi * önce * istisna atıldı. Bu yüzden aramalar size hiç yardımcı olmaz. Bu istisnaya neden olmak için formunuzun neye benzeyeceği tam olarak net değildir. –

cevap

1

Genel bir Visual Studio 2012 Hatası gibi görünüyor.

İşte ben deli beni bütün gün sürdü aynı problem vardı Microsoft'a

Greetings from Microsoft Connect!

This notification was generated for feedback item: VS2012 WinForms Designer doesn't work anymore -Error: Collection was modified; enumeration operation may not execute.which you submitted at theMicrosoft Connect site.

Thank you for your feedback. This bug is a duplicate of the one reported here: http://connect.microsoft.com/VisualStudio/feedback/details/781193/form-designer-error-collection-was-modified-enumeration-operation-may-not-executethere Please monitor that issue (781193) for further updates. There are no workarounds available, but we are fixing this issue in the next release of Visual Studio.

+0

VS2012 Güncelleştirme 3'ü yeni yükledim. Sorun hala devam ediyor. Düzeltme ile "sonraki sürüm" gibi görünüyor VS2013 olacak. –

4

aldığım resmi posta olduğunu. Nedeni (tabii ki Visual Studio hatalarının kendisi dışında), projemin bir montaj referansı eksikliğiydi. Kesin olmak gerekirse, A'nın B'ye de atıfta bulunduğu iki A ve B grubu derlemesine atıfta bulunmuştum, fakat kullandığımdan farklı bir versiyonda. Başvurulan A'nın aynı B sürümüne başvurmalıydım.

Ne olduğu anlaşılamıyor: Montaj referanslarım doğru değildi. Kodun derlenmesi ve çalıştırılması için yeterliydi, ancak WinForms tasarımcısının çökmesine yetecek kadar yanlıştı.

Sorunu bulmak için , ikinci bir VS örneğini başlattım ve çözümleyicimi yüklenen ilk hata ayıklayıcısını ekledim (Debug | Process to Attach). Sonra Debug | İstisnalar, Ortak Dil Çalışma Zamanı İstisnaları'nı kırmayı etkinleştirdim. Şimdi, ilk VS örneğimde, açmak için formu çift tıklıyorum.

Çoğu sırada kodumla hiçbir ilgisi olmayan üst üste birden fazla özel durum var. Ama bunlardan biri bir FileLoadException idi: "Dosya veya montaj yüklenemedi 'XXX, Sürüm = 3.7.0.25089, ..." Bu yüzden derlemenin doğru sürümüne bir başvuru ekledim. (Ve doğru olarak, son basamağa kadar demek istiyorum - WinForms tasarımcısı, montaj sürümleri söz konusu olduğunda çok titiz davranıyor.) Ve bildiğim sonraki şey, form bir çekicilik gibi açılıyor!

+0

Bu bana iyi bir çözüm gibi geliyor. Projemizi VS2008'den VS2012'ye geçirirken, aynı zamanda bir versiyon cehenneminde sona eren küçük projelerimizden de nugetler yaptık. Önerdiğiniz şeyi deneyeceğim ve başvurulan DLL'lerimizde yanlış sürüm numaralarını arayacağım – LazyGeek

İlgili konular