从worker角色访问执行程序集

时间:2014-11-19 20:59:22

标签: reflection azure-worker-roles

我正在创建一个辅助角色,使appDomain在该appDomain上加载一个类,以便它可以执行某些方法。我想在appDomain(称为Loader)中加载的类与worker角色位于同一个dll中。当我尝试使用此行

在appDomain中加载类时
Loader ld = (Loader)domain.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, typeof(Loader).FullName);

我找到了一个未找到文件的例外:

System.IO.FileNotFoundException was unhandled
Message: An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
Additional information: Could not load file or assembly 'Calculation Node, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

我怀疑问题是"访问权限"性质。

我是否需要为该职员角色启用某些设置?

我在程序集和Loader类上都设置了ComVisible(true)。这没有帮助

我还应该提到我正在模拟器上执行辅助角色。

提前致谢,

Nenad Rakic

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案,所以我认为分享它是一个好主意。在创建新的appDomain之前,您需要创建一个将定义基本目录并设置为执行dll位置的设置,如下所示:

  

AppDomainSetup setup = new AppDomainSetup();
  setup.ApplicationBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly()。Location);

然后将此设置传递给AppDomain.CreateDomain();