Теневое копирование AppDomain Включение ссылочных сборок
Я пытаюсь Shadow Copy в первый раз. У меня есть следующий код:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
var sApplicationDirectory = Application.StartupPath;
var sAppName = "propane";
AppDomainSetup oSetup = new AppDomainSetup();
string sApplicationFile = null;
// Use this to ensure that if the application is running when the user performs the update, that we don't run into file locking issues.
oSetup.ShadowCopyFiles = "true";
oSetup.ApplicationName = "MyApplication";
// Generate the name of the DLL we are going to launch
sApplicationFile = System.IO.Path.Combine(sApplicationDirectory, sAppName + ".exe");
oSetup.ApplicationBase = sApplicationDirectory;
oSetup.ConfigurationFile = sApplicationFile + ".config";
oSetup.LoaderOptimization = LoaderOptimization.MultiDomain;
// Launch the application
AppDomain oAppDomain = AppDomain.CreateDomain(sAppName, AppDomain.CurrentDomain.Evidence, oSetup);
oAppDomain.SetData("App", sAppName);
oAppDomain.ExecuteAssembly(sApplicationFile);
// When the launched application closes, close this application as well
Application.Exit();
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
}
}
Исполняемый файл просто достигает временного каталога и работает до тех пор, пока я не достигну упомянутой dll. 14-16 библиотек, на которые я ссылался в течение всего проекта, не копируются в этот временный каталог, что приводит к взрыву приложения.
Что мне не хватает? Как мне заставить их всех копироваться во временный каталог?
1 ответ
Решение
В нашем приложении практически одинаковый код, и он работает хорошо.
Разница лишь в том, что наш основной метод также украшен
[LoaderOptimization(LoaderOptimization.MultiDomain)]
Вы можете попробовать это, чтобы увидеть, если это имеет значение.