Подтвердить что ты не робот

Visual Studio 2010 Winforms продолжает забывать ресурсы

По какой-то причине в моем текущем проекте я создаю свой файл ресурсов через свойства проекта, добавьте загрузку существующих изображений. Затем перейдите, чтобы добавить эти изображения в пункты меню, сохраните их. На этом этапе все выглядит нормально, и изображения отображаются правильно.

Однако как только я закрою конструктор для этой формы, тогда откройте его. Я получаю диалоговое окно с сообщением:

The type 'My.Project.Properties.Resources' has no property named 'icon_plus'.

Досадно, что если вы выполните его до кода, ошибки нет, он компилирует штраф:

this.newToolStripMenuItem.Image = global::My.Project.Properties.Resources.icon_plus;

Я попытался удалить все ресурсы и удалить файл ресурсов из проекта, полностью закрыв IDE, а затем перезагрузив его. Я переместил расположение файлов, но у меня просто нет идей, и это ДЕЙСТВИТЕЛЬНО начинает колотить примерно с 10 формами и элементами управления, которые каждый дает мне эту ошибку, что они удаляют значки из пользовательского интерфейса.

4b9b3361

Ответ 1

Это одна из тех ОЧЕНЬ раздражающих проблем, о которых я бы никогда не подумал, пока не получил еще одну проблему, которая заставила меня изменить ситуацию.

Похоже, что приложение использовало профиль клиента для .net 4, а не только по умолчанию .net 4. Как только я изменил это по этой проблеме, остановился, и другая проблема с отсутствующим пространством имен, которая недавно возникла, исчезла.

Ответ 2

Взгляните на ссылки на проект и удалите ссылку на себя.

Ответ 3

Вот что сработало для меня. (Пробовал все, что было опубликовано, и не было радости.)

При первом запуске проектов по умолчанию namespace, указанном в свойствах проектов, было MyProject. (поэтому большинство моих классов выглядели как namespace MyProject{ public class foo{} }

Позже я изменил пространство имен для своих классов от MyProject до CompanyName.MyProject Это также, когда возникла проблема.

В моем случае мне пришлось вернуться к Project Properties и изменить фактическую запись от Default namespace до CompanyName.MyProject

Взрыв, больше проблем.

Ответ 4

Скорее всего, это приведет к конфликту с пространством имен.

Двойная проверка всех пространств имен в проекте, VS нравится делать "ProjectName.FolderName". Если он автоматически изменяет один из файлов классов/ресурсов в папке "Значки" на ProjectName.Icon, он может конфликтовать с именем класса/структуры.

Забавно, что приложение строит...

Ответ 5

Я столкнулся с той же проблемой. VS не загружал ни один из объектов формы. Я пробовал все другие подходы без каких-либо результатов.

Ранее я изменил все частные глобальные переменные на общедоступные.

public Textbox exampleTextBox { get; set; }

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

объект должен быть глобальной переменной, а не свойством.

public Textbox exampleTextBox;

Это зафиксировало мой дизайнерский вид.

Ответ 6

Я нашел другой способ

Переместить код формы инициализации в закрытый метод, как показано ниже

private void FormInitialize(){/*Your code here*/}

В конструкторе формы используйте его так:

public Form1()
    {
        InitializeComponent();
        FormInitialize();
    }

И от Button, menuItem или другого метода вызова, подобного этому

    private void ChangeCultureToFrench_Click(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");
        this.Controls.Clear();
        this.InitializeComponent();
        FormInitialize();
    }

Я надеюсь, что эта помощь; -)

Ответ 7

Я уже сталкивался с этой ошибкой. Это возникло для меня, когда я добавил ресурс, а затем убрал его или исправил. Единственный способ, которым я нашел, что я мог обойти эту проблему, - это открыть файл .csproj и найти .ico, чтобы он выдавал ошибку и удалял ее. Ваш поиск

<ItemGroup>
    <None Include="Resources\SomeResource.ico" />
</ItemGroup>

После этого сохраните файл. Откройте решение и снова добавьте его. Надеюсь, это сработает для вас. Обратите внимание, однако, это не идеальное решение.

Edit:

OK. Так что это не решило вашу проблему. Перейдите в папку решений и перейдите в папку "Свойства". внутри вы увидите файл, называемый ресурсами. Откройте его и попытайтесь найти свое проблемное имя файла

<data name="YourNamedIco" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\SomeResource.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, 
         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
</data>

если вы его найдете, удалите это, сохраните.

Надеюсь, это поможет.

Ответ 8

У меня была такая же проблема, как и вы, хотя "решение", которое я использовал, даже не может быть вызвано. Я знал, что добавляю к нему несколько проектов настройки и удаляю их, а также выполняя действия по созданию нескольких изображений.

Решение, которое я использовал? Удалите текущий проект и вернитесь к последней сделанной резервной копии, в которой не было проблемы. Конечно, это будет работать, только если вы создадите резервные копии своих проектных решений.

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

Ответ 9

Я пробовал все остальные ответы, ни один из них не работал.

То, что, как мне показалось, только для меня работало, делало "Unload Project", щелкнув правой кнопкой мыши на вашем проекте, а затем "Reload Project". Прежде чем проверить, работал ли еще мой .cs [Design], я также переименовал свой проект в нечто другое, щелкнув правой кнопкой мыши проект в обозревателе решений и нажав "переименовать".

Не спрашивайте меня, почему это сработало...