2013-05-10 44 views
7

私たちの会社の社内winformsアプリケーションをVS2008プロジェクトからVS2012プロジェクトに変換して以来、私はwinformsデザイナーを使用する際に問題があります。 コレクションが変更されました。列挙操作がVS 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) 

デザイナーが多分あるため、いくつかの無効なアセンブリの参照アセンブリのリストを変更しようとしているようです。 問題を解決しようとしているうちに、「プロジェクト - >プロパティ - >セキュリティ」の「ClickOnceセキュリティを有効にする」オプションを変更すると、デザイナーが元の状態に戻ります。しかし、オプションがオンになっていると私はデザイナーのエラーをオフにして、すべてを再構築すると問題を時々解決することができます。 ...だから私は今や少し失われている。

+0

おそらく2010年にアップグレードする必要があります。 :/ –

+0

例外がスローされる前に*コレクションが変更されました*。コールスタックはあなたをまったく助けません。この例外を引き起こすフォームがどのように見えるかは完全には不明です。 –

答えて

1

これはgenerell Visual Studio 2012 Bugのようです。ここで

は私は一日中狂気私を運転した同じ問題を持っていたマイクロソフト

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 Update 3をインストールしましたが、問題は解決しません。 VS2013は修正を伴う "次のリリース"のようだ。 –

4

から得た公式メールです。原因は(もちろん、Visual Studioのバグ自体とは別に)私のプロジェクトにアセンブリ参照がないことでした。正確に言えば、AとBの2つのアセンブリを参照していましたが、ここでA自体もBを参照していましたが、使用したバージョンとは異なるバージョンです。私は参照されているBの同じバージョンを参照する必要があります。

私の議論は正しくはありませんでした。彼らはコードをコンパイルして実行するだけで十分でしたが、WinFormsデザイナーがクラッシュするほど間違っていました。

問題を見つけるために、2番目のVSインスタンスを起動し、ソリューションをロードした最初のインスタンスにデバッガをアタッチしました(デバッグ|プロセスにアタッチ)。次に、デバッグ|例外として、私はthown共通言語ランタイム例外を無効にしました。今、私の最初のVSインスタンスで、フォームをダブルクリックして開きました。

私は複数の例外を連続して取得しましたが、そのほとんどは自分のコードとは関係ありませんでした。しかし、そのうちの1つはFileLoadExceptionであり、「ファイルまたはアセンブリ 'XXX、Version = 3.7.0.25089、...をロードできませんでした」です。そのため、正しいバージョンのアセンブリへの参照を追加しました。 (そして、正しければ、最後の数字を指しています - アセンブリ言語になると、WinFormsデザイナーは非常に賢いです。)そして次に私が知っていることは、フォームが魅力のように開きます!

+0

これは私には良い回避策のように聞こえる。私たちのプロジェクトをVS2008からVS2012に移行するときには、小規模なプロジェクトからナゲットを作成しました。あなたが提案したものを試し、参照されるDLLの間違ったバージョン番号を探します – LazyGeek

関連する問題