添加对共享驱动器上的.dll的引用

问题描述

在引用NET异常Python.NET的情况下,引用位于共享驱动器上的FileNotFoundException动态链接库时。示例代码

import sys
import clr

sys.path.append(PATH_TO_SHARED_NETWORK_DRIVE)
clr.AddReference('MY_DLL')

经过一番谷歌搜索后,我发现真正的问题是.NET Framework认情况下未启用CAS策略。因此,要在共享驱动器上引用dll,需要启用loadFromremoteSources开关。示例代码

from clr import System 
from System import Reflection 

Reflection.Assembly.LoadFrom(FULL_PATH_TO_MY_DLL.dll)

例外:

System.NotSupportedException:尝试加载程序集 从可能导致装配被定位的网络位置 .NET Framework早期版本中的沙箱。此版本 .NET Framework认情况下不启用CAS策略,因此此负载 可能很危险。如果不打算将此负载沙箱化, 程序集,请启用loadFromremoteSources开关。看到 http://go.microsoft.com/fwlink/?LinkId=155569以获得更多信息。

问题是我不知道如何从Python启用loadFromremoteSources切换。

解决方法

显然,设置此设置的唯一方法是通过app.config并使用您提供的链接中的内容:

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

首先,尝试在与python.exe相同的文件夹中创建具有上述内容的python.exe.config文件。如果仍然不能解决问题,那么python.net的用处就会减少,因为您必须创建一个实际的.NET库,并将其本地引用该远程dll并从那里代理您的调用。我认为这应该可以,但是我还没有尝试过。

您确定您确实需要引用远程主机上的dll吗?也许重新定义问题会更好?