현재 VS12 및 기본 제공 디자이너에서 문제가 발생합니다. 기본적으로 기본적인 사용자 컨트롤과 DevExpress 컨트롤을 확장하는 사용자 정의 컨트롤 프레임 워크를 사용하고 있습니다. 잠시 동안 지금 내가 속성을 변경하거나 컨트롤 중 하나를 이동하려고하면 디자인 모드에서 양식을 저장하는 데 문제가 있습니다. 오류 메시지를 가능한 한 잘 번역하려고했습니다 (VS의 독일어 버전 사용).C# VS12 디자이너가 디자인 모드에서 사용자 지정 파생 폼을 저장하는 중 오류가 발생했습니다.
Visual Studio Designer Error Message:
Error during code generation for the MyPropertyMap-property. Error: The property accessor for the MyPropertyMap for the settings object has caused an exception: The enumeration has changed. Enumeration could not be executed.
나는 가능 CLR 디버깅과 비주얼 스튜디오의 또 다른 인스턴스를 사용하여 디자이너의 예외를 디버깅하려고 :
System-InvalidOperationException
The enumeration has changed. Enumeration could not be executed.
Source: CustomForm
StackTrace: MyNamespace.Controls.CustomForm.get_FormVariables()
TargetSite: System.Collections.Hashtable get_FormVariables()
디자이너 내가 숨기려 allthough 폼의 속성에 액세스하려고 할 것 같습니다 그것은 디자이너에서 다음 코드를 사용하여 : 내가 재산의 직렬화 문제가 발생할 수 있습니다 생각했기 때문에
[NonSerialized]
private Hashtable formVariables = null;
[EditorBrowsable(EditorBrowsableState.Never)]
[Browsable(false)]
public Hashtable FormVariables
{
get
{
...
내가 NonSerialized 필드를 추가했습니다. getter는 기본적으로 폼의 패널에있는 모든 컨트롤을 쿼리하고 해시 테이블에 추가합니다. 왜냐하면 내가 타이머 기반의 작업을하고 있기 때문입니다. 그러나 디자인 타임에는 디자이너가이 속성에 액세스 할 필요가 없습니다. 모든 제안을 어떻게 디자이너에서 숨길 수 있으며이 오류를 방지 할 수 있습니까?
다른 중요한 정보를 보내지 못한 경우 알려주십시오.
편집 :
여전히 문제의 원인을 찾으려고합니다. 내가 알게 된 한가지는 Visual Studio 디자이너 설정에서 코드 최적화 최적화를 비활성화하면 항상 오류가 발생한다는 것입니다. 내가 그것을 다시 활성화 할 때 폼을 저장하는 첫 번째 시도에서 한 번 오류가 발생하고 두 번째 시도에서 폼이 저장된다는 의미는 아닙니다. 나는 모든 시간을한다면 지금 당장 확신하지 못한다. 그러나 적어도 두어 동안 나는 그것을 시도했다.
열거 형 또는 다른 컬렉션 개체로 작업하는 모든 공용 속성은 현재 DesignMode에 있으면 null을 반환하도록 구현됩니다. 디자이너가 getter 함수에 액세스하려고 할 때 예외가 계속 발생합니다.
친절하게 제공합니다.
추가하는 것을 잊었습니다. 이상한 것은 getter에서 이미 수행을 막으려 고합니다. get {if (! this.DesignMode) {... if 블록의 outsite 난 단지 기본적으로 null의 개인 회원을 반환 null – monotonouz
나는 새 라이브러리와 GUI 프로젝트를 재건하려고합니다. getter 함수를 디버깅하고 designmode의 설정을 시도하십시오. 왜 디자이너가 기본 코드 – monotonouz