I have a small WPF application which used to compile just fine but is not anymore. I can't really say at which point it stopped building. It just worked fine one day, and the next it's not.
Here's the project structure:
There is no other projects or external references other than standard .net dlls.
Here's the user control where the problem originated:
<UserControl x:Class="TimeRecorder.HistoryUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:TimeRecorder.ViewModel"
xmlns:framework="clr-namespace:TimeRecorder.Framework"
mc:Ignorable="d" Height="Auto" Width="Auto" Padding="5">
<UserControl.Resources>
<local:HistoryViewModel x:Key="ViewModel"/>
<framework:BoolToColorConverter x:Key="ColorConverter"/>
</UserControl.Resources>
<StackPanel DataContext="{StaticResource ViewModel}">
And here's the error I get:
Please note that this is not just the one file in the screenshot, but all references I add in similar fashion in xaml in all user control/window files in this project.
So the file is there, the namespace in the file is correct, the namespace/class name in the xaml file is (to my understanding) correct. I get intellisense when I type in the xaml so it finds the files ok then but not when it compiles.
The most common solution for this in other posts has been the .net framework version. It is currently set to .Net Framework 4 for both my main and test project. The full version not the client profile.
Here's what I think I messed up:
In the configuration manager, both projects have their Platform set to Any CPU, but at one point when trying to solve this I noticed that the main project was set to x86 and the test project was set to Any CPU. So I added Any CPU manually for the main project in the configuration manager. However I honestly don't know if I did this correctly or even if I should do it. So as an additional question, is there a way I can reset the configuration manager to its default state? Will this have anything to say for the main problem? I don't know if the main project was always set to x86 or not or if I somehow changed it to x86 and then it broke. As mentioned this project was compiling just fine for a while.
Every time it happend to me i just restarted visual studio, re-built the solution and it worked just fine.. can't say why
In addition to the "does not exist in the namespace" message, I was also getting a message from the designer that it could not display the window for x64 and ARM targets.
I have just found that switching the build to x86 mode, doing a rebuild solution, then switching back to x64 mode and then rebuilding again fixes [both] problems.
Simply rebuilding the x64 solution did nothing.
What I found that helped (especially if this error occurs in App.xaml) is to comment out the reference(s) that gives you trouble, rebuild, then uncomment. I think what this does is allows the entire project to actually build instead of stopping the build at the error.
From what I can gather, the app is trying to build the files in a certain order, so when App.xaml or presumably any other class file errors in a reference, the file that is causing the error hasn't been compiled correctly, hence why it doesn't find the file in that namespace.
This is what worked for me on Visual Studio 2012 (Update 3).
Restart Visual Studio
Add current assembly to namespace declaration xmlns:framework="clr-namespace:TimeRecorder.Framework;assembly=MyAssembly
Build -> Build Solution
Rebuild your solution (sometimes clean then build works better). Then look at your error list, scroll to the very bottom, and it will most likely indicate an error that is not allowing your assembly to compile, and the XAML compiler is most likely using a cached version of the assembly, not the new one you mean to build.
What worked for me:
- Switch solution configuration from Debug to Release
- Switch back configuration from Release to Debug
I had the similar issue. In my case, I had to do the following
remove the referencing markup from xaml (in this example, <local:HistoryViewModel x:Key="ViewModel"/>)
build the Class ( in this example file which contains HistoryViewModel class )
Once its built, add the referencing markup in xaml
build again
The above method worked for me.
Ran into this issue today with Visual Studio 2017 Community Edition. Tried all the suggestions here (reset VS 2017, changed from x64 to x32 and back again etc etc) and from other sources to no avail. Intellisense knows everything is there but I was getting the same error everytime.
Anyway, my fix turned out to be very simple ... aren't they always when you have spent a couple of hours on the problem!
Basically, I did the following ...
Remove offending code from xaml file (just 3 lines in my case)
Build project so you get a successful build
At this point the layout magically appeared in the designer window which was a good sign!
Reinserted the code I removed in point 1. including the xmlns: entry
At this point you shouldn't get any blue squiggles ... hopefully
Build the project again
It's seem that by getting a successful build, it must reset 'something' within VS and/or the assembly. Once you have a successful build try inserting your code again.
Had this problem going round in circles wasting a few hours. I moved a separate user control dll into the project so it was compiled in the project and not a dll referenced. This broke the whole project so I then went through checking meticulously all namespaces, paths and file names. Tried deleting obj files, changing between release and debug, between x86 and AnyCPU. Opening saving all, recompile still no joy.
Remember having a similar problem before previously, the error flagged in VS2013 was not directly related to where I had to modify the XAML but by using
x:Name="myControl"
on all controls, instead of
Name="myControl"
fixed it.
None of the solutions worked for me. I fixed it this way:
Remove the dll of the library from the References
Download the source code of the library (instead of just the dll file)
Build the library's project to get a new dll file
Add the new dll file to the References of the main project
I Changed Target Framework My Application of ".Net Framework 4.5" to ".Net Framework 4.6" and it worked!
Here's a weird example of a similar thing:
<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:controls="clr-namespace:Gtl.Ui.Controls"
mc:Ignorable="d"
d:DesignHeight="120" d:DesignWidth="120"
Background="Transparent">
...
</UserControl>
will compile (VS2013).
<UserControl x:Class="Gtl.Ui.Controls.WaitControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:controls="clr-namespace:Gtl.Ui.Controls"
mc:Ignorable="d"
d:DesignHeight="120" d:DesignWidth="120"
Background="Transparent"
IsVisibleChanged=onIsVisibleChanged>
...
</UserControl>
produces the error "type Ui not found in Gtl.Ui.Gtl" (and I assure you the handler method exists in the code-behind). The work-around is to add the handler in the class constructor, but c'mon Microsoft, wtf is going on?
I faced the same issue when i was trying to call the namespace in xaml. was showing that class is not available in the namespace. I searched a lot. Finally i found this issue was with VS. I am using VS 2013.
I tried below steps:
Build-->Configuration Manager--> Active Solution Platform --> Changed to x64 and x86 and Any CPU.
Closed the VS and opened again.
Change
xmlns:VM="clr-namespace:MyFirstAppViewModel"
to
xmlns:VM="clr-namespace:MyFirstAppViewModel;assembly=ViewModel"
This error usually occurs when project was not build successfully during the last build.
Step-1) First remove all the error causing code from the XAML or .cs file and build & start the project by pressing F5.
Step-2) Add add your error causing code in XAML one by one.
A complete exit and restart of Visual Studio does often resolve these issues, as stated by a few people who have answered this post already. However, sometimes the errors will not be resolved because it is actually a build failure or a dependency issue instead.
When I have worked on WPF projects in Visual Studio, the XAML errors are not always the underlying cause, but rather a symptom of what is failing. Sometimes there are .net framework dependency issues those don’t show up in there Error List windows and you have to use the Output window to debug what is actually failing.
I have learned that the underlying cause (of why so many errors light up across multiple XAML files) can actually be an incorrect manifestation when the actual culprit originates from a completely separate class or project. Often resulting in a build failure. Especially in solutions with multiple projects, there can be a DLL dependency that fails to generate by one project, leading to a cascading failure that shows up as XAML document errors.
One of the downsides of XAML is that it requires a built copy of the library in order to verify the XAML since the element names match to actual classes. So sometimes you will get XML errors because a library didn't build correctly. Also when adding new controls, if you haven't built the project it won't be able to find the new classes. Just something to keep an eye on when looking at the errors.
Once you fix the underlying build issues outside of the XAML files, it will allow each of the dependent projects to build. In these situations, the errors being thrown across multiple XAML files have nothing to do with the document structure, but rather that the failure of underlying dependencies; it can break the affected XAML document's ability to render the required properties and bindings. This is misleading initially, but helpful for finding the underlying issue if you understand it.
i would recommend to Rename x:Key="ViewModel" maybe there is a glitch
and if you type local: does VS show you HistoryViewModel?
also check if your Class is public
Just run code analysis from Build menu
I found that running the command "Run Code Analysis" re-builds everything and almost always fixes the problem (right click project > Analyze > Run Code Analysis). This also generally re-builds the resource files also so that strings, etc. can be found.
Tried all solutions on this thread but none worked. It turned out to be cause by the solution configuration. My WPF app was set to build for X64 because of some native dependencies that require it but the solution configuration was still set to AnyCPU for the project.
Creating a new X64 configuration for the project in the solution configuration manager allowed the XAML designer to finally recognize my type and namespace.
Before adding the name space to your .xaml file, please make sure you are not having any compilation errors due to existing code.
Once all the compilation checks are OK, then rebuild your solution and try adding the required namespace to use its class or properties.
This may happen if you have errors other than this specific error also. More errors may cause the file not to compile properly and resulting in this error.
First try to remove other build errors and if possible warnings also. Then rebuild the solution.
This is a recurring problem for me. One of the time I found the solution looking into the Warning tab. It was a .NET framework version issue and it stated the following:
Warning 9 The primary reference "myDll" could not be resolved because
it was built against the ".NETFramework,Version=v4.5.2" framework.
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".
There is a glitch with their buffering of the objects layouts. If anything gets renamed or moved, it gets lost.
What generally works for me is to create a completely new class and copy in all the old code, get it working on the new class, then remove the original class. Sometimes after you get it up and running with the new class name, you can try renaming it back to the original name (but usually not)
I was using xmlns:local="using:MyRootNamespace.ChildNamespace" at the header of the .xaml , and i turned it into xmlns:local="clr-namespace:MyRootNamespace.ChildNamespace" ... well, I just let intellisense do the job, and it worked.
The problem is that when you create the x86 target, the output path for the particular project is set to bin\x86\Debug. It looks like Expression blend doesn't like this at all. It seems to only interested in whats in bin\Debug.
If you changed your output path(s) for the x86 project to bin\debug for example, then I'm sure you'd find it will work. Well, works for me anyway :)
The Target Framework of the .dll file you adding should be the same as the Target Framework of your app.
I was facing the same issue. You get this error but still you can build your project successfully, The inconvenience is that you can not see the UI designing (or just want to clean the code & remove annoying wiggly lines).
Read many posts are tried several things but following works like a charm.
Tried this in Visual Studio 2019:
Right click on your Solution -> Properties -> Configuration Properties, then change the project configurations from Debug to Release or vice versa.
After that, rebuild your solution. It can solve your problem.
https://i.stack.imgur.com/2oEWs.png
https://i.stack.imgur.com/dMwNX.png
Had the same issue and I resolved by keeping the exe inside the net5.0-windows folder.
Do not try to remove it in Post-build event command line.
"the name <...> does not exist in the namespace clr-namespace <...>"
If this error persist, no matter what you do, there's most likely other error(s) in your solution that is related to the XAML file.
For me the error got resolved when I solved other issues in my solution.
If the xaml file has the correct namespaces and if you have recently modified the names of any projects within the solution, then here's something to try:
Clean the whole solution
Rebuild each project starting from the lowest in the dependency hierarchy to the highest one by one. Thus, if Project A depends on Project B and Project C, both of which have no further dependencies, then rebuild B and C first, followed by A.
Unload the project with the errors and reload it. Then close and open the sln again if the errors persist.
Related
This question already has answers here:
The name does not exist in the namespace error in XAML
(45 answers)
Closed 1 year ago.
I am building a C#/WPF application using VS2013, and I have the following class definition (in the same assembly of the running application):
namespace MyNamespace
{
public class MyKey
{
public MyKey() { }
public string name = "";
}
}
In MainWindow.xaml I have:
<Window x:Class="MyNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
Title="MainWindow" Height="350" Width="525" WindowState="Maximized" WindowStyle="None">
<Window.Resources>
<local:MyKey x:Key="key" />
</Window.Resources>
...
VS keeps reporting that
The name "MyKey" does not exist in namespace
"clr-namespace:MyNamespace"
Any ideas?
P.S. I tried the following solutions (from already posted questions in stackoverflow) but none of them worked:
Moving the class to a different namespace, then using the new namespace in xaml reference
Restarting VS and cleaning/rebuilding the solution
cleaning the solution then renaming its folder then building the solution again
changing the reference to:
xmlns:local="clr-namespace:MyNamespace;assembly="
Edit: Additional info: The target architecture: X64, target framework: .Net 4.5
One common solution to this known VS bug that you haven't specified as having tried is changing the build target platform.
If your current build target platform is x64, change to x86. If it's currently x86, change to x64.
Clean and Build solution for new target platform.
Change back to desired target platform and re-build.
One possible solution is by removing all the .dll files from Debug and Release folder.
Because sometimes when you refer to the project it refers to the pre-built dlls, even if you running your project in debug mode.
Remove all files from debug and release folder and build that project again, now add reference of this project to where you want. Worked perfectly fine on my end.
Typically when I encounter this problem I noticed that Visual Studio lists 'wrong' errors in the error list and puts me on a wrong track. Having a look in the actual build output in the output window of Visual Studio showed the correct error.
In short: Compare your build output with your error list.
I had the same issue in VS2012 express edition. Solved the issue using the command
"WDExpress/ResetSettings" in vs2012 command prompt.
https://stackoverflow.com/a/33706647/4855197
I had a similar issue. What fixed it for me was changing the build properties of the project, that was added as a reference. Turned out that the "Platform target" had been changed in the past. Setting it to "Any CPU" and rebuilding it solved the error.
Running VS Enterprise 2017 version 15.6.2
Targeting .Net 4.6.1
I had this same problem with a UserControl xaml page where in its resources it was trying to reference a ValueConverter. The namespace was correct, the intellisense would even drop it in for you, but the designer would not load the page and the code would not compile. I even tried moving one of the value converters out of the file and namespace in question and moving it to the code-behind. VS was getting so freaked out that it was claiming the InitializeComponent() method in the code-behind constructor was non-existent.
What I think finally fixed it for me was when I realized the ValueConverter class was missing the leading attribute like this:
[ValueConversion(typeof(string), typeof(decimal))]
Once I added that line, I did a quick solution clean and compile and then it compiled and worked. Then suddenly the xaml could see all the validation rules and value converters in that file. And now I've realized that the other 3 value converters in that file also didn't have a ValueConversion attribute on them and yet the code still compiles now. Maybe something about the incoming types in that first converter were vague.
It's still somewhat of a mystery. I know I should back out my change and see if the error is reproducible, but after fighting that code for most of a day I'm sick of looking at it. It was an old Prism project that wasn't running and I upgraded it to Prism 7.0 libraries. I'd also tried resetting all the processor settings to 'Any CPU'. It complained about the bootstrapper being obsolete but I'd ignored it. I'd rebooted and cleaned everything multiple times. I'd even deleted the .vs folder. I probably should have tried earlier to outright delete the obj and bin folders - that's the one thing I hadn't done.
This wasn't my project. Normally I always build value converters one to a file with the file named the same. I wouldn't think that would matter, but the whole error was a little crazy in the first place.
Try changing the Dot.Net version in your project and update the installed packages if you use the NuGet packages.
In my case the solution was deleting my cloned repository (means all project files) and cloning it again. This way you make sure that even those git-ignored files are deleted.
PS: When you start git-tracking your project using Visual Studio it will automatically generate the .gitignore file for you. If you didn't start git-tracking using Visual Studio you can find the .gitignore file on the Internet (e.g. https://github.com/github/gitignore/blob/master/VisualStudio.gitignore). Also be aware that you cannot git-ignore files after you already started tracking them (technically you can but it requires doing some git sorcery most of us are not capable of).
In a .xaml file of one of my projects I have the following line:
<UserControl
...
xmlns:AuxView="clr-namespace:MySoftware.Resources.Aux_Views;assembly=MySoftware.Resources">
...
And then the line:
<AuxView:Loading_Simple/>
Which produces the error, and thus does not compile the project:
Error 2 The tag 'Loading_Simple' does not exist in XML namespace
'clr-namespace:MySoftware.Resources.Aux_Views;assembly=MySoftware.Resources'.
...
However, the MySoftware.Resources assembly is referenced, it appears in the IntelliSense, and other projects make use of this without problems.
Also the Target Framework of the projects is .NET Framework 4 (not Client Profile).
I have tried cleaning and rebuilding the solution with no results.
I also tried creating another project from scratch, with the same code, and the problem persists.
I have no idea of what to do further. Any ideas? I use Visual Studio 2010.
Thanks.
Edit: Now it magically worked. And apparently, I have changed nothing relevant. This sounds like a VS bug. I will keep the question opened if someone finds the real reason.
I have a weird error showing up in my project when it is open in the VS2012 IDE. Everywhere where I make use of another referenced project it suddenly says "Type or Namespace name could not be found". And by "says", I mean it has the text underlined in red with the error when I hover over it. The intellisense doesn't work for that code. BUT (and here's the weird part), the errors do not show up in the error console and the project builds and runs fine.
I can even debug and step through the code and it works perfectly fine. So at runtime the project is referenced fine but at design time the IDE can't find it. This worked for the past 2 weeks, and only then suddenly went a little bonkers. It's really annoying because I am rubbish at coding without intellisense!
Has anybody ever seen anything like this or have any suggestions?
I had this. I referenced assemblies whose "Target Framework" were set to ".Net Framework 4" in the "Application" secion of the projects properties. I changed this to ".Net Framework 4.5" not just in the referenced assembly's project but also the project I was building and it worked. Give this a try.
I have found this is a known problem with VS2012. Check to see how you are building, 64 bit or 32 bit. It won't work with 64 bit but it will with 32 bit. It will say things are missing and design will not work, however the program will run fine. I have heard the new VS update that hasn't been released yet will fix it.
Manually delete all the references to the libraries of the other projects and re-add. Intellisense rebuilds whatever it needs at that point and doing this has helped me in the past.
Another source of this problem is a solution with multiple projects containing code for the same namespace. The compiler can handle this. Intellisense won’t.
Related to a couple other answers here, I had a "Data" project using a "Data" namespace. Built fine, but just started recently showing errors from intellisense (even though it continued building fine.) (VS 2015.)
I fixed this by changing my "Data" project and namespace to "MyCompany.Data".
Oddly, the problem didn't seem to show up until recently, but making the change did fix it. Presumably there was a conflict in namespace with another project or reference, which can build fine, but intellisense can't handle.
You can change this in the Application tab of Project properties. You can also open up an EDMX diagram, right click, choose model browser, choose the second collapsable item in the model browser tab, hit properties, and there you'll find the Namespace option for generated Entity Framework entities and contexts. (Similiarly, if you modify an Entity Framework Model's namespace, you might also need to change the related connection to match [in Web.Config for ASP.Net and MVC.])
Make sure that there is no class with the name same as Project default namespace.
make sure that you don't reference .net framework 4.5 projects in .net 4 projects!
Examine your .proj files in a text editor and make sure the paths to your references are correct.
This can also happen if you set the Build Action to "None" on the referenced file and forget about it.
I had the same problem, where it would build and run fine, it just would always show that error and I couldn't use intellisense with the class.
I actually used the automatic method of creating the class in a new file to resolve the issue, then just copied the code over from the real class. I deleted the old file, renamed the new file, and now it works.
I am learning how to create a Class Library (Windows Store apps) and used a UserControl template to add a user control to it.
Then I added a Grid tag to accompanying XAML. However, the tag is underlined with blue squiggles and when I hover over the tag there is
Grid is not supported in a Windows Presentation Foundation (WPF) project
tooltip shows up.
The library seems to build without errors. I've added the library to an application and use the control in its code. The application is also builds just fine. However, when I run the application I get XamlParseException exception.
I am using Visual Studio 2012 RTM. Both the library and the application reference only two standard assemblies (.NET for Windows Store apps and Windows).
What I might done wrong and how should I fix the library?
In my case I switched from Debug to Release, and then back, and the error was gone.
Go to "Build > Configuration Manager..." and Make a new platform for x86 for all your projects.
It doesn't have to be the active one, you can leave that as Any CPU.
Hope it works as for mine...
I've recently had the same error and found the following in the output window:
10>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFX.targets(268,9): error MC6000: Project file must include the .NET Framework assembly 'WindowsBase, PresentationCore, PresentationFramework' in the reference list.
The solution for me was to add the missing references to my project.
For me it helped to set the "Target framework" in application-properties to .NET 4.0
This appears to be a bit of a "catch-all" for a number of XAML resource errors. I've found two causes so far:
Declaring a Resource outside of the appropriate context- e.g. directly in a UserControl tags, not UserControl.Resources.
Forgetting to include the correct namespace for the "unsupported" class. Example in a basic ResourceDictionary, with no sys namespace defined:
<ResourceDictionary>
<sys:string>I'm not supported</sys:string>
</ResourceDictionary>
I was able to solve my similar issue of..
UserControl is not supported in a Windows Presentation Foundation (WPF) project
.. by removing the PresentationFramework reference and re-adding it via nuget.
[Reposting comment as answer]
I was able to complete the steps with no issues, and it appears you were able to as well. Perhaps there was some other inadvertent modification/setting that was made?
This is xaml getting itself confused. I have the error on one project and not on another. Have a look at the top of the xaml before the grid error and see if there are any references to other controls. Try making a modification that will cause and error and rebuilding one of those controls. Then put it back the way it was to get a succesful build and see if this makes the grid error go away. (it did for me)
Much Like Felix D.s answer, I found from the .csproj file a reference was removed.
Obviously replace the 3 with your needed framework, or use the project properties to set the version ( i think that adds this reference )
Evil Dog Pie was step 1 for me, as some other issues came up. There is always a heap of information in the output log
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
This problem is due to the low version of .NET that you have chosen in your project.
To solve the problem, select the Project from the up menu and then select your Project Properties and from the part of Target Framework select higher version of .NET Framework!
I hope your problem is solved.
Yours sincerely
I've got a strange problem adding a dll reference. I've got a WPF application and am trying to use the WPF MDI library: http://wpfmdi.codeplex.com/
As stated in the instructions (which are very vague), I right-clicked on references in VS2012, clicked on Add reference.., clicked on Browse.. and added my dll which I downloaded.
Next, I added the following line in the XAML of my window: xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI" as stated in the instructions.
However, when trying to add an <mdi:MdiContainer> in the XAML, the following error messages are displayed:
The type 'mdi:MdiContainer' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.
The name "MdiContainer" does not exist in the namespace "clr-namespace:WPF.MDI;assembly=WPF.MDI".
This is my XAML:
<Window x:Class="QueryBuilder.Table"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"
Height="300" Width="300" WindowStyle="ToolWindow" ResizeMode="NoResize" ShowInTaskbar="False">
</Window>
This problem has been frustrating me all day. I've tried almost everything imaginable. One thing worth noticing is that I've downlaoded the sample application from the library's site, and I can run it with no problems. Besides this, I have added this to the xaml.cs class of my project: WPF.MDI.MdiContainer d = new WPF.MDI.MdiContainer(); and it compiles with no problems at all.
Please also note that my initial problem was asked here, and none of the suggestions worked. The problem has now changed however, due to the above paragraph which seems to indicate that the code is compiled successfully in the code behind, but not in the XAML file.
EDIT: I would also like to add that I am able to browse through the code of the assembly reference as shown below.
I've finally solved the problem myself - going to leave this answer here incase someone has the same problem some time. Adding the solution itself to the reference path of the assembly solves the problem! It's a shame this isn't documented...
EDIT: To clarify, what I did was add the solution, rather than the dll. In other words, I added the MDI solution with all its classes. This naturally applies to DLLs where the source code is available too.
If Visual Studio keeps complaining and underlining even after you tried everything, terminate the XDesProc.exe process using Task Manager and then rebuild the solution.
Got sln file from http://wpfmdi.codeplex.com/. Built that project and used the new .dll from bin, used that, then it worked fine for me.