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

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

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

我能做些什么?

4

2 回答 2

1

这些文件需要被解锁

发生这种情况是因为 Windows 将可执行文件跟踪为来自互联网的 zip 文件。借用 Perl 的一个术语,该 zip 文件是“污染的”,Windows 会跟踪从 zip 文件到解压缩文件的污染。

您之前可能已经看到过这样的情况,一个简单的下载并运行的可执行文件会在系统上运行几个月后询问您是否真的要运行该可执行文件。如果您打开属性文件,您将看到安全警告: 属性对话框

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

作为保护的一部分,操作系统似乎更喜欢像访问远程文件一样访问它们。而在 .NET 的早期版本中,这不是问题,而在 .NET 4 中却是。正如对话框所解释的, CAS 或代码访问安全在此版本中更具限制性。

它还说“启用 loadFromRemoteResources 开关”。因此,在阅读了该主题之后,我创建了一个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的安装。

于 2014-11-13T17:55:50.087 回答
0

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

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>
于 2016-05-24T13:27:06.087 回答