AppDomain的DoCallBack()发生意外异常

时间:2017-02-06 15:09:04

标签: c# .net appdomain

以下代码实际上在我的安装应用程序中运行。但是,如果我从单元测试项目调用它, tmpDom.DoCallBack(theCallback); 会导致异常。我已将代码剥离为“无所事事”的骷髅,但无论如何都没有改变!

using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;

namespace Setup
{
   internal class BMRegAsm
   {
      public bool RegisterDll()
      {
         AppDomain tmpDom = AppDomain.CreateDomain("DOMAIN-XYZ");
         string theName= tmpDom.FriendlyName; // Returns the correct name!
         try
         {
            CrossAppDomainDelegate theCallback = new CrossAppDomainDelegate(BMRegAsm.RegX);
            tmpDom.DoCallBack(theCallback);
         }
         catch (Exception exc)
         {
             Trace.WriteLine("==RegisterDll== " + exc.Message);
         }
      }

      private static void RegX() // Due to "static"-callback, no frmMain objects available.
      {
      }
   }
}

tmpDom.DoCallBack(theCallback)抛出以下异常;

==RegisterDll== Die Datei oder Assembly "Setup, Version=4.14.4.199, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

对不起德语文本。这意味着,系统找不到指定的文件。

即使我有CallStack,我也无法评估错误。 tmpDom.FriendlyName 返回正确的名称。

有人知道导致异常的原因吗?

1 个答案:

答案 0 :(得分:0)

右键单击测试项目以查看测试版本的输出文件夹是什么。将这些文件列表与“安装应用程序”输出文件夹下的文件进行比较,并查看缺少的文件。

要添加丢失的文件有几种方法,取决于文件。例如:

  • 将参考文件的“复制本地”设置为true。

  • 将复制命令添加到帖子构建事件