以下代码实际上在我的安装应用程序中运行。但是,如果我从单元测试项目调用它, 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 返回正确的名称。
有人知道导致异常的原因吗?
答案 0 :(得分:0)
右键单击测试项目以查看测试版本的输出文件夹是什么。将这些文件列表与“安装应用程序”输出文件夹下的文件进行比较,并查看缺少的文件。
要添加丢失的文件有几种方法,取决于文件。例如:
将参考文件的“复制本地”设置为true。
将复制命令添加到帖子构建事件