Хорошо, я подозреваю, что это может быть вещь Visual Studio, но для этого должна быть какая-то причина. Я создал из списка элементов по умолчанию ListBox (Щелкните правой кнопкой мыши по проекту или папке в проекте → Добавить → Новый элемент → Xaml ListBox). Сразу же я получаю красную squiggly линию с ошибкой:
"Ошибка 2 Вызов неоднозначен между следующими методами или properties: 'Identical.NameSpace.ListBox1.InitializeComponent()' и 'Identical.NameSpace.ListBox1.InitializeComponent()' C:\Documents and Настройки\ouflak\Мои документы \Visual Studio 2010\Projects\Identical\NameSpace\ListBox1.xaml.cs 27"
Весь этот код автогенерируется, и причина ошибки связана с конфликтом между двумя автоматически сгенерированными файлами: ListBox1.g.cs и ListBox1.designer.cs, где public void
InitializeComponent() - объявлено в обоих. Естественно, код не может скомпилироваться при этом обстоятельстве. Это достаточно просто, чтобы просто удалить ListBox1.designer.cs и двигаться дальше, я полагаю. Но мой вопрос: почему этот код автогенерируется с этой ошибкой? Я бы ожидал, что все, что сгенерировано автоматически, сможет построить и скомпилировать без необходимости касаться проекта или любого кода. Для почти любого другого предмета toobox, который вы можете добавить, это так. Так зачем генерировать этот код со встроенной ошибкой? Должны ли мы найти какой-то способ сделать эту работу? Является ли этот код просто предложением, и пользователь/разработчик IDE выдает детали?
Вот сгенерированный код: ListBox1.xaml:
< ?xml version="1.0" encoding="utf-8" ? >
< ListBox
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:xc="http://ns.neurospeech.com/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
x:Class="Identical.NameSpace.ListBox1"
>
<sys:String>Item 1</sys:String>
<sys:String>Item 2</sys:String>
<sys:String>Item 3</sys:String>
< /ListBox>
ListBox1.g.cs:
namespace Identical.Namespace
{
/// <summary>
/// ListBox1
/// </summary>
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class ListBox1 : System.Windows.Controls.ListBox, System.Windows.Markup.IComponentConnector {
private bool _contentLoaded;
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/MyProject;component/namespace/listbox1.xaml", System.UriKind.Relative);
#line 1 "..\..\..\namespace\ListBox1.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
this._contentLoaded = true;
}
}
}
ListBox1.designer.cs:
namespace Identical.NameSpace
{
using System;
public partial class ListBox1 : System.Windows.Controls.ListBox
{
private void InitializeComponent()
{
// Pre Statements...
string string1 = "Item 1";
string string2 = "Item 2";
string string3 = "Item 3";
// Statements...
this.BeginInit();
this.Items.Add(string1);
this.Items.Add(string2);
this.Items.Add(string3);
this.EndInit();
// Post Statements...
}
}
}
и, наконец, ListBox1.xaml.cs(только для предотвращения XML-документации и предупреждений Stylecop):
namespace Identical.NameSpace
{
/// <summary>
/// ListBox1 class
/// </summary>
public partial class ListBox1 : ListBox
{
/// <summary>
/// Initializes a new instance of the ListBox1 class
/// </summary>
public ListBox1()
{
this.InitializeComponent();
}
}
}
Что это. Это код целиком в своем полностью автоматическом состоянии, за исключением комментариев, которые я ввел в файл xaml.cs.
Я немного искал этот сайт и интернет, но никто, кажется, не объяснил это поведение. Я, вероятно, просто удалю код designer.cs и перейду дальше. Но если кто-нибудь знает, почему это здесь в первую очередь, или если это действительно ошибка в Visual Studio 2010 профессионал, я бы очень хотел знать.