为什么我在尝试本地安装cs-script时出错?

时间:2014-11-13 17:55:50

标签: .net windows code-access-security cs-script

  • 您从网站下载CS-Script包
  • 安装说明说要将文件解压缩到所需位置,然后运行css_config.exe来安装软件包。
  • 但是如果您运行更高版本的.NET,您可能会看到一个消息框,上面写着:

    System.IO.FileLoadException:无法加载文件或程序集 '文件:/// X:\路径\为\ CS-脚本\ csws.exe'或其中一个依赖项。操作不是 支持(HRESULT异常:0x80131515)
    文件名:' file:/// X:\ Path \ To \ cs-script \ csws.exe' - > System.NotSupportedException:
    尝试从网络位置加载程序集 导致程序集在以前版本的.NET中被沙箱化 框架。此版本的.NET Framework不支持CAS策略 默认情况下,因为此负载可能很危险。如果不是这个负载 沙盒,请启用loadFromRemoteResources开关。看到 http://go.microsoft.com/fwlink/?LinkId=155569了解更多信息 在System.Reflection.RuntimeAssembly ...

发生了什么?为什么它调用本地文件,解压缩到本地磁盘,远程文件

我该怎么办?

2 个答案:

答案 0 :(得分:1)

这些文件需要解锁

这是因为Windows跟踪来自互联网的zip文件中的可执行文件。从Perl借用一个术语,该zip文件被“污染”,Windows跟踪从zip文件到解压缩文件的污点。

如果您真的想要运行该可执行文件,那么您之前可能已经看到过这样一个简单的下载并运行的可执行文件会在您进入系统后询问。如果您拉出属性文件,您将看到安全警告: Properties Dialog

此文件来自另一台计算机,可能会被阻止以帮助保护此计算机。

作为该保护的一部分,操作系统似乎更喜欢像远程文件那样访问它们。而在早期版本的.NET中,这不是问题,在.NET 4中,它是。如对话框所述,CAS或Code Access Security在此版本中的限制性更强。

它还说“启用loadFromRemoteResources开关”。所以在阅读subject后,我创建了一个X:\Path\To\cs-script\csws.exe.config文件(因为没有配置文件)并放入其中:

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

哪个没有。后来我在文件属性对话框中找到了Unblock按钮。但是单击csws.exe的该按钮只会导致对话框抱怨无法“远程”启动另一个可执行文件。

所以在做了一些挖掘之后,我想出了以下的powershell函数:

function Unblock-All { Get-ChildItem @args -Recurse | Unblock-File }

然后像这样运行:

Unblock-All X:\Path\To\cs-script

之后,我成功地完成了cs-script的安装。

答案 1 :(得分:0)

此问题的解决方案是在安装程序上创建配置文件,即X:\Path\To\cs-script\css_config.exe.config包含:

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>