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 формами и элементами управления, которые каждый дает мне эту ошибку, что они удаляют значки из пользовательского интерфейса.
Ответы
Ответ 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]
, я также переименовал свой проект в нечто другое, щелкнув правой кнопкой мыши проект в обозревателе решений и нажав "переименовать".
Не спрашивайте меня, почему это сработало...