【问题标题】:Excel DNA Code Access SecurityExcel DNA 代码访问安全性
【发布时间】:2014-05-12 17:23:16
【问题描述】:

我有一个简单的 excel DNA 插件,在 0.32 版中创建。

在我的加载项中,我正在动态加载在网络驱动器上找到的另一个程序集。

当我将我的 excel DNA 加载项加载到 Excel 并运行我的 Excel-DNA 函数时,我收到以下错误:

{"此方法隐式使用CAS策略,已被 .NET 框架。为了启用 CAS 策略以实现兼容性 原因,请使用 NetFx40_LegacySecurityPolicy 配置 转变。请参阅http://go.microsoft.com/fwlink/?LinkID=155570 更多信息。”}

我在 Visual Studio 中为 ExcelDNA 项目创建了一个 .config 文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="DbPath" value="testString"/>
  </appSettings>
  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="true" />
    <legacyCasPolicy enabled="true"/>
    <loadFromRemoteSources enabled="true"/>
  </runtime>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
</configuration>

关于如何解决此问题的任何想法?

任何帮助将不胜感激。

【问题讨论】:

    标签: c# code-access-security excel-dna


    【解决方案1】:

    如果我没记错的话,您指定的实际 .config 文件必须与加载加载项的可执行进程一起存在。在这种情况下,它将是Excel.exe,因此配置应称为Excel.exe.config,并存在于 Excel 目录中。

    要在 .NET 4.0 中使用对代码访问安全性的旧支持的同时从网络共享加载库,您可能必须使用caspol.exe 工具 (click here for .NET 4.5 details)。这可能取决于您如何部署和签署您尝试加载的库。该工具通常位于以下路径:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\CasPol.exe

    使用向工具发出的示例命令行:

    CasPol.exe -m -ag 1.2 -url file://to/your/network/share/* FullTrust

    值得注意的是,存在两种代码访问安全配置,一种用于 32 位架构,一种用于 64 位架构。如果您使用 CasPol.exe 工具和 64 位命令提示符修改代码访问安全性,那么您正在修改 64 位进程的 .NET 代码访问安全性! Excel 通常作为 32 位进程运行(如果您遵循 Microsoft's install advice),因此您需要在 32 位命令提示符下执行 CasPol.exe,例如:

    C:\Windows\SysWOW64\cmd.exe

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2010-11-23
      • 1970-01-01
      • 2017-06-02
      • 2014-08-26
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多