Почему «Мое» пространство имен недоступно? - PullRequest
1 голос
/ 14 января 2010

Наше приложение Winform состоит из Main.exe и Launcher.exe. Цель приложения Launcher - проверять наличие обновленных версий Main.exe.

Если он не находит обновлений, он запускает Main.exe с помощью System.Diagnostics.Process.Start

Если он находит обновление, он копирует новый Main.exe на место и запускает Main.exe таким же образом (в этом случае это будет новая копия Main.exe).

Вот код Process.Start:

Dim p As New ProcessStartInfo
p.FileName = "Main.exe"
p.WindowStyle = ProcessWindowStyle.Normal
Process.Start(p)

Этот код выполняется независимо от того, было ли обновление, и всегда успешно запускает Main.exe.

Однако наш Main.exe, если он запускается впервые (т. Е. После обновления), выдаст ошибку в любой строке, ссылающейся на пространство имен My, например My.Settings или My.Computer.FileSystem

Например, эта строка вызовет ошибку:

Msgbox(My.Computer.FileSystem.SpecialDirectories.Desktop)

Вот ошибка:

System.IO.DirectoryNotFoundException: Не удалось найти специальный каталог «Рабочий стол». в Microsoft.VisualBasic.FileIO.SpecialDirectories.GetDirectoryPath (String Directory, String DirectoryNameResID) в Microsoft.VisualBasic.FileIO.SpecialDirectories.get_Desktop () в Microsoft.VisualBasic.MyServices.SpecialDirectoriesProxy.get_Desktop ()

Но хотя этот пример относится к рабочему столу, помните, что он не может найти никаких специальных каталогов. Это не только для рабочего стола.

Но только при первом запуске (т. Е. Сразу после обновления). После этого он будет работать нормально.

Если бы процесс более эффектно завершился, что связано с проблемами файловой системы, блокировками или потоками, это было бы более понятно. Но почему именно эта "незначительная" проблема с пространством имен My?

1 Ответ

2 голосов
/ 14 января 2010

Теперь я понимаю, что это не имеет ничего общего с скопированным файлом и не имеет ничего общего с плохо реализованным System.Security.Principal.WindowsImpersonationContext.

Удивительно, как эти вещи становятся понятными через 5 минут после публикации.

...