仅适用于 VS 设计视图的 Blend 中的 UnresolvedAssemblyException - 在 VS 设计视图中工作正常

Posted

技术标签:

【中文标题】仅适用于 VS 设计视图的 Blend 中的 UnresolvedAssemblyException - 在 VS 设计视图中工作正常【英文标题】:UnresolvedAssemblyException in Blend for VS design view ONLY - works fine in VS design view 【发布时间】:2015-09-09 08:29:22 【问题描述】:

.NET 框架:4.5.1

我在 Blend for Visual Studio 2015 中遇到一个奇怪的错误,我找不到它的来源。

如果我在 VS 中打开我的 WPF 解决方案,它会加载并运行良好。设计视图也有效。

但是,如果我在 Blend 中打开我的 WPF 解决方案,每当我在设计器中打开我的任何 .xaml 文件时,它们都会短暂加载(大约一秒钟)然后抛出以下错误:

Microsoft.MetadataReader.UnresolvedAssemblyException
Type universe cannot resolve assembly: System.Runtime, Version=4.0.0.0, 

Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
   at Microsoft.MetadataReader.SimpleUniverse.Microsoft.MetadataReader.ITypeUniverse.ResolveAssembly(AssemblyName name)
   at Microsoft.MetadataReader.SimpleUniverse.Microsoft.MetadataReader.ITypeUniverse.ResolveAssembly(Module scope, Token tokenAssemblyRef)
   at Microsoft.MetadataReader.MetadataOnlyModule.ResolveTypeRef(ITypeReference typeReference)
   at Microsoft.MetadataReader.MetadataOnlyTypeReference.GetResolvedTypeWorker()
   at Microsoft.MetadataReader.TypeProxy.GetResolvedType()
   at Microsoft.MetadataReader.TypeProxy.GetHashCode()
   at System.Collections.Generic.ObjectEqualityComparer`1.GetHashCode(T obj)
   at System.Collections.Concurrent.ConcurrentDictionary`2.TryGetValue(TKey key, TValue& value)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.XamlPlatformMetadata.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(String key, IAssembly assembly, Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.XamlProjectMetadata.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.ProjectContextType.Cache()
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.ProjectContextType.Initialize(IXmlNamespace xmlNamespace, Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.MockType.Initialize(IXmlNamespace xmlNamespace, Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(String key, IAssembly assembly, Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.XamlProjectMetadata.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.ProjectContextType.Cache()
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.ProjectContextType.Initialize(IXmlNamespace xmlNamespace, Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.MockType.Initialize(IXmlNamespace xmlNamespace, Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(String key, IAssembly assembly, Type type)
   at Microsoft.VisualStudio.DesignTools.Platform.Metadata.TypeResolver.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Metadata.XamlProjectMetadata.GetType(Type type)
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Tools.Assets.AssemblyAssetProvider.SynchronizedInitialize()
   at Microsoft.VisualStudio.DesignTools.XamlDesigner.Tools.Assets.AssemblyAssetProvider.UpdateAssets()
   at Microsoft.VisualStudio.DesignTools.Designer.Tools.Assets.AssetProvider.Update()
   at Microsoft.VisualStudio.DesignTools.Designer.Tools.Assets.AssetLibrary.UpdateAssetProvidersWorker()
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority)
   at Microsoft.VisualStudio.DesignTools.Platform.Utility.UIThreadDispatcherHelper.Invoke(DispatcherPriority dispatcherPriority, Action action)
   at Microsoft.VisualStudio.DesignTools.Designer.View.DesignTimeResourceResolver.Resolve(IDocumentContext documentContext, EditDesignTimeResourceModelMode mode, String missingResourceName) ........etc

如果我在 Visual Studio 中调试它(附加到 blend.exe 进程),我会收到以下错误:

Exception thrown: 'System.IO.DirectoryNotFoundException' in mscorlib.dll

Additional information: Could not find a part of the path '<path to my project>\Design\projectGuides.guides'.

这个“设计”文件夹不存在,我不知道它是从哪里获得的。我没有在整个项目中定义任何指南或类似的东西。

另外,我看不出这两条消息之间有任何联系。

任何提示或想法都将不胜感激!

【问题讨论】:

【参考方案1】:

解决方案

所以当我更新到 .NET 框架 4.6 时,这个问题的解决方案变得清晰起来。异常变成了在搜索中返回有用的东西:

Cannot add additional fields to a type that does not have a constructor

当我搜索这个时,第一个结果是Corrado's Blog,我被定向到工具 > 选项 > XAML 设计器中的一个设置,然后勾选“在 XAML 设计器中运行项目代码(如果支持)”选项。

从那以后没有问题。希望这可以在某个时候对其他人有所帮助。

【讨论】:

谢谢,谢谢,谢谢,谢谢你 100 次 XD 嗯,在 Visual Studio 2015 中,我没有“在 XAML 设计器中运行项目代码(如果支持)”。在同一个地方,我有“自动填充工具箱项目”。哪个被检查但没有解决问题:(。当然,这不是 Blend。 @RageCompex 对不起,我帮不了你太多,我没有再设置相同的环境了:(祝你好运【参考方案2】:

有趣的是,我的 Blend 版本没有这个选项。窗口的其余部分看起来相同,只是缺少提到的选项:/。

但是可以点击 excpetion 对话框中的第二个选项:点击此处启用正在运行的项目代码并重新加载设计器

也可以通过设计器窗口左下角的小切换按钮禁用该选项:

更多解释请见here。

【讨论】:

【参考方案3】:

我在 BLEND 中遇到了类似的问题。 Visual Studio 中的视图运行良好。 我遇到了这个异常:

Type universe cannot resolve assembly: System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

所以 BLEND 中的 Designer 显示视图 1-2 秒,然后抛出异常。

我对这个问题的解决方案是:

我打开了我的 VS csproj 文件,发现引用中出现了另一行,我不知道为什么,因为我还没有使用单元测试。参考如下:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

在注释掉之后,设计师不再抛出这个异常。 所以我希望它可以帮助目前正在寻找解决方案的人:)

【讨论】:

以上是关于仅适用于 VS 设计视图的 Blend 中的 UnresolvedAssemblyException - 在 VS 设计视图中工作正常的主要内容,如果未能解决你的问题,请参考以下文章

Vs Blend + Windows 8:如何为应用程序中的元素设置系统通知主题的样式?

WP7 应用程序栏图标未显示在模拟器上(但适用于 Blend)

UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?

如何限制 UIScrollViewDelegate 仅适用于 UIViewController 中的一个视图

Blend 4 中的 WP7 缺少设计视图

3ds Max建模,Blend设计,VS2008控制WPF的3D模型例子