На самом деле в моем приложении установки работает следующий код. Но, если я называю это из единичного тестового проекта, tmpDom.DoCallBack (theCallback); вызывает исключение. Я раздели код уже до скелета «ничего не делаю», но никаких изменений в любом случае!Неожиданное исключение из DoCallBack() из AppDomain
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 возвращает правильное имя.
Есть ли у кого-нибудь идеи, что вызывает исключение?
Выходные каталоги обоих проектов одинаковы. Я удивлен, что файл отсутствует, так или иначе, потому что код не использует какой-либо файл !? –
Как называется недостающий файл? вы запускаете тест и приложение Setup на одном компьютере? – KernelMode
Нет упоминания. Fllowing показывает стек, последняя строка: '\t mscorlib.dll! System.Reflection.RuntimeAssembly.nLoad (System.Reflection.AssemblyName fileName, string codeBase, System.Security.Policy.Evidence assemblySecurity, System.Reflection.RuntimeAssembly locationHint, ref System.Threading.StackCrawlMark stackMark, System.IntPtr pPrivHostBinder, bool throwOnFileNotFound, bool forIntrospection, bool suppressSecurityChecks) \t Неизвестно –