我有一个简单的excel DNA加载项,在0.32版中创建。
在我的外接程序中,我动态地加载另一个在网络驱动器上找到的程序集。
当我将excel DNA外接程序加载到Excel中并运行Excel函数时,我会得到以下错误:
{“此方法隐式使用已被.NET框架淘汰的NetFx40_LegacySecurityPolicy策略。为了使CAS策略具有兼容性,请使用NetFx40_LegacySecurityPolicy配置开关。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=155570。”}
我已经为Visual中的.config项目创建了一个ExcelDNA文件,如下所示:
<?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>对我如何解决这个问题有什么想法吗?
任何帮助都将不胜感激。
发布于 2014-08-04 15:21:06
如果我没记错,您指定的实际.config文件必须驻留在加载外接程序的可执行进程旁边。在这个例子中,它将是Excel.exe,因此配置应该被称为Excel.exe.config,并且存在于Excel.exe.config目录中。
要从网络共享加载库,同时使用.NET 4.0中对代码访问安全性的遗留支持,您可能必须使用caspol.exe工具(单击此处获取.NET 4.5详细信息)创建受信任的代码安全组。这可能取决于您如何部署和签名您试图加载的库。该工具通常驻留在以下路径:
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位进程运行(如果您遵循微软的安装建议),因此需要从32位命令提示符执行CasPol.exe,例如:
C:\Windows\SysWOW64\cmd.exe
https://stackoverflow.com/questions/23615167
复制相似问题