Ok, I suspect this might be a Visual Studio thing, but there must be some reason for this. I created from the list of default items a ListBox (Right Click on project, or folder in project -> Add -> New Item -> Xaml ListBox). Immediately I get a red squiggly line with the error:
"Error 2 The call is ambiguous between the following methods or properties: 'Identical.NameSpace.ListBox1.InitializeComponent()' and 'Identical.NameSpace.ListBox1.InitializeComponent()' C:\Documents and Settings\ouflak\My Documents\Visual Studio 2010\Projects\Identical\NameSpace\ListBox1.xaml.cs 27"
All of the code in question is auto-generated and the reason for the error is because of a conflict between two auto-generated files: ListBox1.g.cs and ListBox1.designer.cs where public void
InitializeComponent() is declared in both. Naturally the code cannot compile under this circumstance. It is simple enough to just delete the ListBox1.designer.cs and move on I suppose. But my question: Why is this code auto-generated with this error? I would expect anything auto-generated to be able to build and compile without having to touch the project or any code. For just about every other toobox item that you can add, this is the case. So why generate this code with the built-in error? Are we supposed to find some way to make this work? Is this code merely a suggestion and it is up to the IDE user/developer to hammer out the details?
Here is the generated code: 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...
}
}
}
and lastly the ListBox1.xaml.cs (only modified to prevent XML documentation and Stylecop warnings):
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();
}
}
}
That's it. This is the code entirely in its virgin auto-generated state with the exception of the comments I put into the xaml.cs file.
I've searched this site and the internet a bit, but no one seems to have explained this behavior. I will probably just delete the designer.cs code and move on. But if anybody knows why this is here in the first place, or if it is indeed a bug in Visual Studio 2010 professional, I'd really like to know.
I had this issue when copying my XAML between controls. I just had to change my x:Class="mynamespace" where mynamespace is the proper namespace for your project. Recompiled and all went back to normal.
I had the same problem after changing a bunch of files at once, here's how I fixed it:
.. and that's it! Visual Studio can be weird sometimes..
It appears that you have declared the InitializeComponent
method in two places in your class, probably one in each partial class. Try searching in all files for InitializeComponent
in Visual Studio and I'm guessing that the results will list two places where it is declared. Delete one and the error will disappear.
UPDATE >>>
I'm not sure what kind of answer you're expecting here... clearly, if you didn't add one of those InitializeComponent
method definitions, then visual Studio has a bug. I very much doubt that there can be any kind of logical reason for this except that it's a bug.
UPDATE 2 >>>
I had a look on the Microsoft Connect website for any existing reported bugs like this but couldn't find any... I've left the link here if you do want to report it to them.
My problem was the project that was giving me the ambiguous call had a reference to its own dll. This was causing the method to be referenced from the dll as well as in the actual project. Once i removed the dll from the references the ambiguous call error went away.
Can happen if you are not alert and careful about how you use Resharper.
This happened to me when a I allowed Resharper to auto-import references while I was coding.
So having mistyped initially, then edited the code I was working on, I did not check what it had imported. After running into the same issue, I realised that there was a self-reference in the same library. So there were double implementations of the method in question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With