Исполняемые файлы.NET не работают после перезаписи новыми версиями

Я столкнулся с очень странным поведением - после перезаписи.NET exectables новыми версиями с сетевого диска он не может запуститься. При попытке запуска из проводника Windows он показывает следующую ошибку:

[Window Title]
C:\Programs\zzz\clients.net\zzzNet.exe
[Content]
C:\Programs\zzz\clients.net\zzzNet.exe
The application has failed to start because its side-by-side configuration is   incorrect. Please see the application event log or use the command-line   sxstrace.exe tool for more detail.

Я пытался выполнить следующие команды:

SxsTrace Trace -logfile:SxsTrace.etl 
SxStrace Parse -logfile:SxSTrace.etl -outfile:SxSTrace.txt 

И получил следующий результат:

=================
Begin Activation Context Generation.
Input Parameter:
    Flags = 0
    ProcessorArchitecture = AMD64
    CultureFallBacks = en-US;en;ru-RU;ru
    ManifestPath = C:\Programs\zzz\clients.net\zzzNet.exe
    AssemblyDirectory = C:\Programs\zzz\clients.net\
    Application Config File = C:\Programs\zzz\clients.net\zzzNet.exe.Config
-----------------
INFO: Parsing Application Config File     C:\Programs\zzz\clients.net\zzzNet.exe.Config.
INFO: Parsing Manifest File C:\Programs\zzz\clients.net\zzzNet.exe.
    INFO: Manifest Definition Identity is (null).
    ERROR: Line 0: XML Syntax error.
ERROR: Activation Context generation failed.
End Activation Context Generation.

Это довольно простое приложение.NET (1 exe + 8 dll файлов). Он был создан для.NET 3.5 Client Profile.

Я не определил никакого особого "манифеста" там. Просто нажмите "Новый проект Windows Forms" в Visual Studio и разработайте его. Также app.config не содержит ничего особенного - только примитивные стандартные настройки - разделы appSettings и userSettings. На ПК, где я его разработал, все отлично работает. Проблемы начались только тогда, когда я скопировал эти двоичные файлы на эту конкретную ВМ и попытался запустить.

Также обратите внимание - эти исполняемые файлы не были установлены в GAC или что-то подобное, я просто скопировал их в папку на виртуальной машине и запустил. И когда это было в первый раз, все работало нормально.

Итак, шаблон проблемы следующий:

  1. Скопируйте исполняемые файлы.NET на новую виртуальную машину (это Win 7 x64), запустите ее, все работает нормально. Закрой его.
  2. Создание новой версии.NET исполняемых файлов на хост-компьютере, копирование новых.NET исполняемых файлов на ВМ (с перезаписью файлов).
  3. Попробуй начать - попала упомянутая проблема.

После некоторых действий в стиле шамана (таких как перезагрузка ОС и т. Д.) Он начинает работать, но почему это вообще произошло?!

Почему замена исполняемых файлов.NET новыми версиями вызывает ОЧЕНЬ ОГРОМНЫЕ ПРОБЛЕМЫ?!

Также БОЛЬШОЙ ВОПРОС - есть ли какая-нибудь специальная процедура для замены исполняемых файлов.NET, чтобы они работали? Поскольку это новая разработка приложений, я не хочу терять столько времени на каждую установку новых исполняемых файлов.:-\

Не могли бы вы помочь? Потому что это выглядит совершенно странно!

Спасибо заранее.

PS. Я проверил все проекты VS - все они имеют PlatformTarget=AnyCPU. Также во время выполнения я вижу ProcessType=MSIL (я показываю эту информацию в AboutBox для приложения). Таким образом, нет никакого сочетания двоичных файлов x86/x64.

1 ответ

Кажется, это было связано с поведением подключенного сетевого диска. Когда я копировал новые файлы из папки сетевого диска, он копировал неправильные файлы - странный случайный беспорядок новых и старых файлов (которые были там до того, как я обновил их на хосте ВМ).

Сценарий, чтобы заставить его работать:

  1. на ВМ: удалить все файлы в папке на сетевом диске
  2. на хосте VM: скопируйте новые файлы в папку, которая отображается как сетевой диск на виртуальной машине
  3. на ВМ: скопируйте файлы в целевую папку
  4. на ВМ: запустите приложение - теперь оно работает

Странная вещь Я помню, что видел нечто подобное с Windows Explorer в Windows 2008, когда копировал обновленные файлы win32.

Другие вопросы по тегам