我在Windows 7上的XP模式VM中安装了Visual Studio 2010 Beta 2.然后我创建了一个简单的Silverlight 4(beta)项目并尝试构建它。我收到以下错误:
错误1“ValidateXaml”任务失败 不料。 System.IO.FileLoadException:不能 加载文件或程序集 “文件:// \软件tsclient \ d \用户\我\文档\ Visual 工作室 2010 \项目\ SilverlightApplication2 \ SilverlightApplication2 \ OBJ \调试\ SilverlightApplication2.dll” 或其中一个依赖项。手术 不受支持。 (例外 HRESULT:0x80131515)
档案名称: “文件:// \软件tsclient \ d \用户\我\文档\ Visual 工作室 2010 \项目\ SilverlightApplication2 \ SilverlightApplication2 \ OBJ \调试\ SilverlightApplication2.dll” ---> System.NotSupportedException:尝试加载程序集 从一个网络位置 导致组装 沙盒在以前的版本中 .NET Framework。这个版本的 .NET Framework不启用CAS 默认情况下,策略,所以此负载可能是 危险的。如果没有这个负载 打算组装沙箱, 请启用 loadFromRemoteSources切换。看到 http://go.microsoft.com/fwlink/?LinkId=155569 了解更多信息。
在 System.Reflection.RuntimeAssembly._nLoad(的AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,布尔 throwOnFileNotFound,布尔值 forIntrospection,布尔值 suppressSecurityChecks)at System.Reflection.RuntimeAssembly.nLoad(的AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,布尔 throwOnFileNotFound,布尔值 forIntrospection,布尔值 suppressSecurityChecks)at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName assemblyRef,证据 assemblySecurity,StackCrawlMark& stackMark,布局forIntrospection, 布尔值suppressSecurityChecks)at System.Reflection.RuntimeAssembly.InternalLoadFrom(字符串 assemblyFile,Evidence securityEvidence,Byte [] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection,布尔值 suppressSecurityChecks, StackCrawlMark&安培; stackMark)at System.Reflection.Assembly.LoadFrom(字符串 assemblyFile)at Microsoft.Silverlight.Build.Tasks.ValidateXaml.XamlValidator.Execute(ITask 任务) Microsoft.Silverlight.Build.Tasks.ValidateXaml.XamlValidator.Execute(ITask 任务) Microsoft.Silverlight.Build.Tasks.ValidateXaml.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost,TaskLoggingContext taskLoggingContext,TaskHost taskHost, ItemBucket存储桶,TaskExecutionMode howToExecuteTask,Boolean& taskResult)
我认为这与XP Mode将My Documents文件夹重定向到主机,将其转换为网络共享位置以及触发某种CAS /安全策略这一事实有关。
任何人都知道如何修复它?
答案 0 :(得分:4)
您是否在配置文件中添加了<loadFromRemoteSources enabled="true"/>
?
答案 1 :(得分:4)
还在http://social.msdn.microsoft.com/Forums/en-US/webdevelopmentprerelease/thread/ea9b9cab-cbfd-496d-8a81-7b3dd06e8c23上解释了启用loadFromRemoteSources以及其他选项;设置环境变量COMPLUS_EnableLegacyCASPolicy。
修改(随着帖子的删除,从上面的网址中复制并粘贴)
David DeWinter - MSFT(2009年5月20日,星期三,上午2:10)
警告:我不是安全团队,但会尽力回答这个问题......这里发生的事情是,Silverlight的构建任务正在尝试加载一个程序集,该程序集在以前版本的CLR中,根据CAS策略将其根据其证据(例如其区域)将其归类为部分信任程序集。
在CLR 4.0中,CAS策略完全弃用,默认情况下甚至没有启用。但是,在这种情况下,当CLR 2.0中的部分信任负载是CLR 4.0中的完全信任负载时,CLR似乎会抛出异常。
loadFromRemoteSources切换引用的异常消息是在配置下的运行时元素中,如下所示:
<runtime>
<loadFromRemoteSources enabled="true|false" />
</runtime>
这不会启用旧版CAS策略,但会允许您(或者,在本例中为构建系统)加载具有与主机AppDomain相同权限的远程程序集。在这种情况下,似乎你可以修改构建系统的配置(我假设在这种情况下将是Visual Studio:%ProgramFiles%\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.config)来启用此功能开关。
如果您不想修改该配置,则可以将环境变量COMPLUS_EnableLegacyCASPolicy设置为1,这将启用CLR 2.0中存在的CAS策略,并允许Silverlight加载此任务。
希望有所帮助。 大卫,博客 - http://blogs.rev-net.com/ddewinter/ Twitter - @ddewinter
答案 2 :(得分:3)
如果您将<loadFromRemoteSources enabled="true"/>
添加到 devenv.exe.config ,它应该可以正常工作。
有关详情,请访问http://msdn.microsoft.com/en-us/library/dd409252%28VS.100%29.aspx