Brian C Hart Ответов: 0

Как мне заставить дизайнера winform действительно позволить мне создать свою форму?


У меня есть большое решение, скажем, 60-иш проектов. Одним из проектов является библиотека, содержащая элементы управления.

Один из элементов управления, который он содержит, - это класс textbox, производный от TextBox, например,

using System;
using System.Windows.Forms;

// MySpecialTextBox.cs in a MyClassLibrary project.  The form I am trying
// to design is in the main EXE's project, and the main EXE's project has a project
// reference to MyClassLibrary which is also a member of the solution.
namespace MyNamespace
{
    public class MySpecialTextBox : TextBox 
    {
        // ...
    }
}


Когда я открываю форму, на которую я поместил экземпляр этого элемента управления в прошлом (когда конструктор каким-то образом работал), я теперь получаю экран сообщения об ошибке "чтобы предотвратить возможную потерю данных перед загрузкой конструктора, необходимо устранить следующие ошибки:"

- Не удалось найти тип "MyNamespace".MySpecialTextBox.' пожалуйста, убедитесь, что на сборку, содержащую этот тип, есть ссылка. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен с использованием настроек для вашей текущей платформы или любого процессора."

Что я уже пробовал:

Когда я открываю форму, на которую я поместил экземпляр этого элемента управления в прошлом (когда конструктор каким-то образом работал), я теперь получаю экран сообщения об ошибке "чтобы предотвратить возможную потерю данных перед загрузкой конструктора, необходимо устранить следующие ошибки:"

- Не удалось найти тип "MyNamespace".MySpecialTextBox.' пожалуйста, убедитесь, что на сборку, содержащую этот тип, есть ссылка. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен с использованием настроек для вашей текущей платформы или любого процессора."


Я попробовал следующее:

  • Откройте редактор конфигураций и убедитесь, что все флажки в столбцах "сборка" установлены и что нет конфликтующих конфигураций платформ (платформы решений-это только x64/x86, и каждый подпроект имеет одну и ту же конфигурацию)
  • Выполните то, что предлагалось во многих статьях Stack Overflow: Build -> Clean Solution, Build -> Rebuild Solution, выйдите из Visual Studio, удалите все папки bin и obj, а затем снова откройте Visual Studio. Ошибка все еще появляется. Все мое решение строится идеально.
  • Почти все остальное в Google. Это проявляется в элементах управления, непосредственно производных от стандартных элементов управления .NET Framework, а также UserControl. Это похоже на то, что у дизайнера появилась аллергия на пользовательские элементы управления или что-то в этом роде.
  • Я проверил, что нигде в моем решении нет сломанных ссылок, Перейдя и развернув папки ссылок одну за другой и проверив, исправляя любые ссылки желтого треугольника (где Visual Studio жалуется на отсутствующие/сломанные ссылки.
  • Это происходит как в Visual Studio 2010 со всеми примененными обновлениями, так и в самой последней версии Visual Studio 2017 со всеми примененными обновлениями.
  • </ul

    Кто-нибудь знает, что происходит?

GKP1992

Обычно это происходит, когда я меняю dot net framework, файлы конструктора повреждаются, и я ничего не вижу на конструкторе. Так ли это на самом деле?

Hermann Jung

Открыть второй против, например, подключить отладчик к первой инстанции, возможность исключения "перерыв, когда кинули" во второй инстанции. Теперь попробуйте открыть form-designer в первую очередь. Я надеюсь, что это даст вам ключ - удачи.

Richard MacCutchan

Сообщение ясно говорит вам, что сборка, содержащая этот класс, не может быть найдена. Вы должны определить, почему, посмотрев на ссылки, которые вы включили в свой проект(ы). Может быть, собрание просто нужно перестроить.

Richard Deeming

Очевидным обходным путем было бы переместить библиотеку элементов управления в отдельное решение и заменить ссылку на проект ссылкой на сборку.

0 Ответов