Не удалось загрузить файл или сборку или одну из ее зависимостей. Система не может найти указанный файл - PullRequest
0 голосов
/ 05 марта 2012

Я работаю над программой (написанной другими людьми), эта программа написана на C # с использованием Visual Studio 2010. Почти все было хорошо (за исключением некоторых логических проблем), пока я не попытался вместо этого найти программу в режиме Release. режима отладки. Эта программа загружает модули тестирования (PingTest.dll) и запускается, когда компьютер не используется. Отладочная версия сохраняет все файлы в рабочей папке, в то время как Релизная версия «устанавливает» в c: \ Users \ Macke \ AppData \ Local \ NetMon \ и перезапускается оттуда (все файлы, необходимые для запуска, также хранятся там). Поэтому, когда я запускаю NetMon.exe, он падает. Я добавил несколько try / catch и обнаружил ошибку:

Не удалось загрузить файл или сборку 'CountDow_Idle, версия = 1.0.0.2, Culture = нейтральный, PublicKeyToken = null' или одну из ее зависимостей. Система не может найти указанный файл.

Часть кода, которая его вызывает: AppDomain aDom = AppDomain.CreateDomain («TestingDomain»); Сборка testAsm = null;

            using (FileStream fs = File.Open(TMP_MOD_NAME, FileMode.Open))
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    byte[] buffer = new byte[1024];
                    int read = 0;
                    while ((read = fs.Read(buffer, 0, 1024)) > 0)
                        ms.Write(buffer, 0, read);

                    testAsm = aDom.Load(ms.ToArray());
                }
            }

            INetMonTest iTest = null;
            foreach (Type type in testAsm.GetExportedTypes())
            {
                if (type.BaseType.FullName == "CountDown_Idle.INetMonTest")
                {
                    try
                    {
                        iTest = (INetMonTest)aDom.CreateInstanceAndUnwrap(AssemblyName.GetAssemblyName(TMP_MOD_NAME).FullName, type.FullName);
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("AppDomain creation failed:\n\n" + ex.Message);
                    }
                    break;
                }
            } 

Я уже искал правильные версии (в файле AssemblyInfo.cs)

Так что, возможно, кто-нибудь может мне помочь. Спасибо заранее

1 Ответ

0 голосов
/ 12 марта 2012

Проблема найдена!Проверьте имена файлов вашего проекта.

Имя файла отладки - CountDown_Idle.exe, а имя файла выпуска - NetMon.exe (переименовывается в автоустановке).Поэтому я попытался запустить отладочную версию из любого места моего компьютера, она работала, но если я изменил ее на NetMon.exe (вместо CountDown_Idle.exe), это не сработало .. Теперь установщик сохраняет исходное имя файла и все работает отлично,Дело в том, что программа должна называться NetMon.exe, и я не могу изменить ее (даже в программном коде), чтобы она работала ...

...