Data binding EntryPointNotFoundException-在表达式Blend 4中加载MVVM轻型视图时未找到入口点

Data binding EntryPointNotFoundException-在表达式Blend 4中加载MVVM轻型视图时未找到入口点,data-binding,mvvm-light,expression-blend,service-locator,Data Binding,Mvvm Light,Expression Blend,Service Locator,我发布这个问题是为了记录解决方案,因为我发现解决这个问题非常棘手而且耗时 我在Silverlight 4项目中使用了excellent,我在Microsoft.Practices.ServiceLocation中使用了他的ViewModelLocator模式。ServiceLocator加载设计时模型以实现可混合性。最初在Expression Blend 4中加载视图是可行的,设计时数据绑定非常好。这在某个点停止工作,而在Blend中根本没有任何错误消息 我使用VisualStudio2010S

我发布这个问题是为了记录解决方案,因为我发现解决这个问题非常棘手而且耗时

我在Silverlight 4项目中使用了excellent,我在Microsoft.Practices.ServiceLocation中使用了他的ViewModelLocator模式。ServiceLocator加载设计时模型以实现可混合性。最初在Expression Blend 4中加载视图是可行的,设计时数据绑定非常好。这在某个点停止工作,而在Blend中根本没有任何错误消息

我使用VisualStudio2010SP1附加到Blend.exe来调试问题。EntryPointNotFoundException(未找到入口点)异常正在这一行代码中引发:

return ServiceLocator.Current.GetInstance<ExampleViewModel>();
“Microsoft.Practices.ServiceLocation.dll”和“Microsoft.Practices.ServiceLocation.dll”中都存在类型“Microsoft.Practices.ServiceLocation.ServiceLocator”

将变更集与以前的工作代码进行比较时,我注意到我在一个单独的项目(引用UI项目)中添加了对GalaSoft.MvvmLight.Extras.SL4的引用。此测试项目引用的程序集来自C:\Program Files(x86)\Laurent Bugnon(GalaSoft)\Mvvm Light Toolkit\Binaries\Silverlight4,其中UI项目引用的程序集来自..\packages\MvvmLightLibsPreview.4.0.0\lib\SL4。我使用了包MvvmLightLibsPreview将mvvmlight添加到客户端项目中


“混合结果-错误”和“输出”窗口在任何时候都未显示任何错误消息。显然,不需要真正的答案,除非有一些混合故障排除技术可以帮助我更快地解决问题。

正如您所料,更改测试项目的MVVM Light assembly引用以使用客户端UI项目使用的相同包版本可以解决问题。我不知道为什么Visual Studio在以与Blend相同的方式引用Microsoft.Practices.ServiceLocation.dll的两个版本时没有出现问题。

我遇到了几乎相同的问题,尽管在使用Windows 7控制面板卸载MVVM Light之前,我的问题没有消失。NuGet MVVM Light引用仍在项目中,但现在我可以看到设计时数据。它以前坏过


我遵照MVVM Light网站上的建议,附加了Visual Studio 2012的混合预览,收到了您上面提到的错误(EntryPointNotFoundException)。即使在那时,我也不知道应该尝试删除两个相互冲突的MVVM Light版本。

我最终尝试复制来自NuGet的包的全部内容

C:\ProgramFiles(x86)\Laurent Bugnion(GalaSoft)\Mvvm Light 工具箱\二进制文件

这并没有解决问题。 因为卸载MVVM Light会带走其他东西,比如代码片段,所以我决定返回并解决更多问题。我没有成功,只能找到一个粗略的临时解决办法

通过查看以下四个DLL文件,我尝试比较可以工作的项目和无法工作的项目:

GalaSoft.MvvmLight.Extras.WPF4 GalaSoft.MvvmLight.WPF4 Microsoft.Practices.ServiceLocation System.Windows.Interactivity

我看不出版本有什么不同

因此,目前的解决方法是在VisualStudio2012中使用MVVM Light WPF模板启动一个新项目,构建它,然后删除对上述四个DLL的引用。然后,我从NuGet安装了MVVM Light软件包,并在App.xaml中编辑出视图模型定位器的双条目,然后程序运行正常。此时,我可以在主窗口上看到设计数据消息,其中显示

“欢迎使用MVVM Light[设计]”


非常有趣。我不使用nuget,因为它在成熟度方面还不太成熟,本例说明了这一点。nuget成功工作的唯一方法是接管解决方案中每个项目的整个引用添加机制。在这之前,很容易选择错误的包装和软管。不过,它正在出现——他们过去没有解决方案级别的软件包,这是朝着正确方向迈出的一步。@mikepost我不确定这是否是nuget的问题。Nuget最初用于客户端UI项目,后来我添加了一个单元测试Silverlight项目,手动引用了不同的程序集。如果我在这个单元测试项目上也使用了addpackage,那么问题就不会发生了。一个容易发生的用户错误,但仍然是用户错误。令人沮丧的是缺少良好的错误消息。后来我才把2和2放在一起,意识到同样的问题导致了我的单元测试出现问题,但出现了另一条模糊的错误消息。
?ServiceLocator.Current