2013-09-16 1 views
5

На прошлой неделе я закрыл свой рабочий проект VS 2012 (11.0), и сегодня я не могу загрузить конструктор форм Windows. Вместо этого я получаю это сообщение: «Чтобы предотвратить возможную потерю данных перед загрузкой конструктора, необходимо устранить следующие ошибки: Недопустимые символы в пути». Невозможно проигнорировать сообщение. Я все еще могу запустить свой код, и он работает нормально. Пожалуйста, приготовьтесь к длительным стека вызовов:Ошибка конструктора формы Windows «Незаконные символы в пути».

at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) 
at System.IO.Path.Combine(String path1, String path2) 
at Microsoft.VisualStudio.Platform.VsAppDomainManager.d__1.MoveNext() 
at Microsoft.VisualStudio.Platform.VsAppDomainManager.InnerResolveHandler(String name) 
at Microsoft.VisualStudio.Platform.VsAppDomainManager.ResolveHandler(Object sender, ResolveEventArgs args) 
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName) 
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) 
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) 
at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) 
at System.Type.GetType(String typeName) 
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType) 
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase) 
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name) 
at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.IDesignerHost.GetType(String typeName) 
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager) 
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager) 
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager) 
at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)) 

Visual Studio не дает мне никаких подробностей, помимо этого, раздражающе (я даже не знаю, какой «путь» он имеет в виду), но я не могу добавить еще немного информации:

  • в моих Settings.settings у меня есть строка logFileDir, которая указывает на каталог файлов журнала. Путь в настоящий момент действителен, и когда я запускаю свою программу, он корректно обновляет файл журнала.

  • Форма метод загрузки прост и выглядит следующим образом:

    if (Properties.Settings.Default.logFileDir != null) 
    { 
        _logFileDir = Properties.Settings.Default.logFileDir; 
        PopulateLstDirectory(); 
    } 
    else 
    { 
        _logFileDir = null; 
    } 
    
  • Стек вызовов растет иногда, когда я запускаю код, но новые линии, как представляется, дублируют уже существующих, что я наклеенными выше.

  • Я пробовал очистить & восстановление моего решения и проекта, а также перезапуск VS несколько раз.
  • У меня нет никаких сторонних элементов управления в проекте.
  • 2-ая самая высокая линия стека вызовов говорит о Path.Combine - единственный раз, когда я называю, что функция в методе Click() какой-либо кнопки на моей форме:

    string pathString = Path.Combine(_logFileDir, logFileName); 
    
+0

Эта проблема возникает только для этой формы или для других форм в вашем проекте (если есть)? – Steve

+0

@Steve У меня есть только одна форма на данный момент – valsidalv

+5

Обычно это происходит, когда у вас есть код в конструкторе формы, который не может быть выполнен во время разработки, например: доступ к файлам и доступ к db. есть ли у вас такой код? – VahidNaderi

ответ

0

Ах, это раздражает, когда это происходит. Вам нужно будет просмотреть файл form.designer, чтобы узнать, в чем проблема. В представлении кода - скомпилируйте свою программу и посмотрите на ошибки, которые она скажет вам, где проблема. Просто зайдите в файл .designer и исправьте ошибки.

Смежные вопросы