WPF设计器无法在VS 11 beta中加载

4
我在使用Visual Studio 11 beta WPF设计器时遇到了一个奇怪的错误(即搜索部分stacktrace时Google没有返回任何结果)。
问题如下: 当我创建一个WPF应用程序项目,然后向其中添加窗口或用户控件时,在嵌入式WPF设计器中编辑它们时没有任何问题。 但是,当我创建一个WPF用户控件项目时,我无法让它正常工作:我遇到了下面粘贴的奇怪错误。
我的目标是.Net 4.5... 我的VS是法语(抱歉)。 我把这个问题的文字粘贴上去是为了可搜索性,同时也放了一张图片方便阅读。
编辑:我会将错误消息的第一部分翻译成(抱歉我的英语...) 尝试从网络源加载程序集,这意味着在之前的.Net Framework版本中使用沙盒模式使用该程序集。由于此.Net Framework版本默认不激活CAS策略,因此此加载可能存在风险。 等等...

VS designer exception


System.NotSupportedException:尝试从网络位置加载程序集,这在早期版本的.NET Framework中会导致使用沙箱模式。由于此版本的.NET Framework默认未激活CAS策略,因此该加载可能存在危险。如果此加载不打算在沙箱模式下使用程序集,则请启用loadFromRemoteSources开关。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=155569。在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.DirectInvoke[T](WaitHandle abort,Func1 func)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TResult,TValue](RemoteHandle1 targetObject,Func1 func)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalOut[TResult,TValue](RemoteHandle1 targetObject,Func`2 func)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.Microsoft.Expression.DesignHost.IDesignerService.CreateDesigner(IHostSourceItem item,IHostTextEditor editor)中 在Microsoft.Expression.DesignHost.IsolatedDesignerService.CreateDesignerViewInfo(IIsolationTarget isolationTarget,IHostSourceItem item,IHostTextEditor editor,CancellationTokenSource cancelSource)中 系统.NotSupportedException:尝试从网络位置加载程序集,这在早期版本的.NET Framework中会导致使用沙箱模式。由于此版本的.NET Framework默认未激活CAS策略,因此该加载可能存在危险。如果此加载不打算在沙箱模式下使用程序集,则请启用loadFromRemoteSources开关。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=155569。在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.CallQueue.WaitForCompletion(BlockingCall call)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.CallQueue.Invoke(BlockingCall call)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.CallQueue.Invoke[T](Func1 func,WaitHandle aborted)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.MarshalIn[TResult](IRemoteObject targetObject,Func1 func)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.RemoteDesignerService.Microsoft.Expression.DesignHost.Isolation.Remoting.IRemoteDesignerService.CreateDesigner(IRemoteHostSourceItem remoteItem,IRemoteHostTextEditor remoteEditor)中 在System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object[] args,Object server,Object[]& outArgs)中 在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)中 异常重新抛出于[0]: 在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)中 在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.IRemoteDesignerService.CreateDesigner(IRemoteHostSourceItem remoteItem,IRemoteHostTextEditor remoteEditor)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.LocalDesignerService.<>c__DisplayClass8.b__7(IRemoteDesignerService d)中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.<>c__DisplayClass42.<MarshalOut>b__3()中 在Microsoft.Expression.DesignHost.Isolation.Remoting.ThreadMarshaler.DirectInvoke[T](WaitHandle abort,Func1 func)中 System.NotSupportedException:尝试从网络位置加载程序集,这在早期版本的.NET Framework中会导致使用沙箱模式。由于此版本的.NET Framework默认未激活CAS策略,因此该加载可能存在危险。如果此加载不打算在沙箱模式下使用程序集,则请启用loadFromRemoteSources开关。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=155569。在System.Reflection.RuntimeAssembly.nLoadFile(String path,Evidence evidence)中 在System.Reflection.Assembly.LoadFile(String path)中 在Microsoft.Expression.Utility.AssemblyHelper.LoadFile(String path)中 at Microsoft.Expression.DesignSurface.Assemblies.AssemblyService.CreateClassicShadowCopy(IHostProject project

我猜这就是为什么它仍然处于测试版阶段。立即向微软报告此问题! - Bernard
通常情况下,当您尝试访问从Web下载的程序集时,会出现这种情况,必须先解除阻止。请参见此处了解更多信息。在这种特殊情况下,如果没有涉及自定义程序集,我可以想象微软可能忘记解除其自己的程序集的阻止(无论在该情况下是什么)。 - nik
我考虑了一下。但是有没有办法知道它可能是哪个程序集?也许VS在某个地方记录了它吗? 我试图通过将另一个VS实例附加到第一个实例来捕获异常,但显然Microsoft.Expression.DesignHost.dll(抛出异常的dll)已经被优化,因此当捕获异常时无法收集有关本地变量的信息 :-/ - Olivier
请注意,该产品目前尚未有官方名称。一旦确定名称,它将不会是“Visual Studio 2011”(过去的年份)。在“Visual Studio 11”中,“11”表示版本号(Visual Studio 2010 是第10个版本;VS2008 是第9个版本)。 - John Saunders
1个回答

3
我似乎通过启用loadFromSources解决了问题,具体方法如下:
  1. 前往C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE
  2. 使用文本编辑器(可能需要管理员权限)打开文件XDesProc.exe.config、devenv.exe.config和XDesProc.exe.appx.config
  3. 在</runtime>之前添加<loadFromRemoteSources enabled="true"/> (如果你复制/粘贴,请确保双引号以ASCII格式传递,否则Visual Studio会出错)
(来源:http://www.sehajpal.com/index.php/2010/10/how-to-solve-loadfromremotesources-error-in-vs-2010/
也许只有对XDesProc.exe.config进行此操作才是必要的,我不确定。
之后,我遇到了一个不同的错误:Method not found: 'Boolean Microsoft.Windows.Design.PropertyEditing.PropertyFilter.get_IsFiltering()'
解决方法:将文件Microsoft.Windows.Design.Interaction.dll从c:\Program Files (x86)\Microsoft Expression\Blend for Visual Studio\Microsoft.Windows.Design.Interaction\复制到c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\(您可能希望先备份现有文件)。
(来源:http://connect.microsoft.com/VisualStudio/feedback/details/728263/xaml-editor-reports-unexpected-error-microsoft-expression-designhost-isolation-remoting-remoteexception
微软的某位工作人员表示,安装Beta版覆盖开发者预览版不受支持,也许这就是我遇到第二个问题的原因。

谢谢!问题已解决!(你说得对:第二部分对我没有用) - Olivier
这里非常奇怪的是它随机发生,即使有正确的.config启动文件,现在却一直发生。这个安全模型真是一场灾难。 - nicolas
我将其添加到所有配置中,包括“XDesProc.exe.config”、“devenv.exe.config”和“XDesProc.exe.appx.config”,然后它就可以工作了。如果您在此回答我的问题,我会给您一些积分https://dev59.com/NGLVa4cB1Zd3GeqP0eCf - nicolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接