View在不同的Assembly中找不到ViewModel

bas*_*sti 6 c# wpf .net-4.0 mvvm

我正在开始一个新项目,并将我的项目结构定位在这个问题中推荐的结构上.

现在我看到了奇怪的行为.当我在View-XAML中设置datacontext时,在运行时找不到它(获得a XamlParseException).当我在codebehind-file的构造函数中设置它时,一切正常.

这是使用不同程序集时的官方(记录)行为,还是我做错了什么?

代码:

不工作:

MainView.xaml:

<UserControl x:Class="ViewsRoot.Views.MainView"             
         xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"            
         xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<UserControl.DataContext>
    <viewModels:ShellViewModel />
</UserControl.DataContext>
Run Code Online (Sandbox Code Playgroud)

MainView.xaml.cs

public MainView() 
{
    InitializeComponent();
    // No DataContext set in codebehind-file    
}
Run Code Online (Sandbox Code Playgroud)

工作:

MainView.xaml:

<UserControl x:Class="ViewsRoot.Views.MainView"             
         xmlns:baseControls="clr-namespace:BaseControls;assembly=BaseControls"            
         xmlns:viewModels="clr-namespace:ViewModelsRoot;assembly=ViewModelsRoot">
<!--<UserControl.DataContext>
    <viewModels:ShellViewModel />
</UserControl.DataContext> -->
Run Code Online (Sandbox Code Playgroud)

MainView.xaml.cs:

public MainView()
{
    InitializeComponent();
    DataContext = new ViewModelsRoot.ShellViewModel();
}
Run Code Online (Sandbox Code Playgroud)

更新:

例外文本是:

{"文件或程序集\"ViewModelsRoot,PublicKeyToken = null \"或其中一个依赖项未找到.系统找不到指定的文件."}

我能看到的唯一内部例外是System.IO.FileNotFoundException.

更新2:

感谢您的评论,但我没有忘记命名空间.我在这里缩短了它以显示代码,但我加倍并且重复检查(再次).DataContexts命名空间也由intellisense填充.整体<viewModels:ShellViewModel />是由智能写的.所以它在设计时被发现......所以更多的想法?

更新3: xaml被"正确"解析,因为我能够将DataContext绑定到同一程序集中的类.

So *_*ins -1

当项目目标框架设置为“Client Profile”(VS2010、IIRC上默认设置)时,我经常发现此错误,如果是这种情况,请尝试将其更改为3.5或4.0。