2010-06-28 3 views
4

Несколько дней назад мои приложения .NET 3.5 начали сбой при запуске ошибкиMicrosoft нарушила совместимость .NET?

«Не удалось найти версию среды выполнения для запуска этого приложения».

Поскольку я ничего не делал с ними, это выглядело странно для меня. После некоторого расследования я обнаружил, что причиной является автоматическое обновление Windows, которое установило пакет обновления для .NET 3.5 или .NET 4 на мой компьютер (я не понял, кто из двух виновен). Это обновление невозможно было удалить, поскольку оно не было показано в списке Установленные обновления Windows на панели управления. Я должен был вернуться к точке восстановления системы!

Сегодня один из моих клиентов пожаловался на ту же проблему. Я не могу заставить его вернуться к восстановлению системы, поэтому мне нужно знать, как преодолеть эту глупую вещь Microsoft. Кто-нибудь может поделиться своими идеями?

P.S. Программное обеспечение защищено CodeVeil 1.2, возможно, это имеет значение.

+3

Где происходит сбой? Можете ли вы опубликовать код, который ломается? У вас есть трассировка стека? Сведения об исключении? Любые другие подходящие детали? – Oded

+0

Ошибка при запуске программного обеспечения. Нет кода, нет трассировки стека, нет исключений, только окно сообщения с ошибкой о том, что не удается найти время выполнения. Это не воспроизводится в MS Visual Studio. Возможно, это связано с использованием защиты CodeVeil, я пока не знаю. – Alex

+1

Это на XP? Недавнее обновление нарушило некоторые вещи WCF для меня. Чтобы удалить обновление, отметьте флажок «показать обновления» в «Установка и удаление программ». Он также может быть связан с 'System.dll' начать обновляться. – leppie

ответ

1

Спасибо всем за помощь!

Я, наконец, понял, что это старый CodeVeil, который был виновен в разрушении приложения. После установки обновления .NET 4.0 все приложения, защищенные CodeVeil 1.2, были полностью повреждены. Я приобрел новейшую версию продукта и теперь работает.

2

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

  • Какая версия CLR - это приложение, составленное против?
  • Какие версии CLR установлены на машине?
  • Какая операционная система является машиной?

Обычно это сообщение об ошибке возникает, когда приложение скомпилировано для версии CLR, которая не установлена ​​на компьютере. Например, имея приложение 2.0, но только 4.0 CLR.

+0

На моей машине у меня 3.5 (о да, это 2.0 на самом деле :). Приложение скомпилировано для использования 3.5. Программное обеспечение работает до того, как было установлено обновление. Я ничего не делал, поэтому это обновление, которое сломало программное обеспечение.Я возвращаюсь к восстановлению системы, и программное обеспечение снова работает. Мои Windows 7, 64 бит. – Alex

+0

Это смешно, не так ли? Microsoft не смогла разработать свою CLR обратно совместимую? – chiccodoro

+1

@chiccodoro, CLR в значительной степени обратно совместима, но истинная 100% обратная совместимость означает, что вы вообще не можете сильно изменить. Много веселых примеров, где очень тонкие изменения вызывают трудности в устранении проблем в приложениях. Это одна из причин, по которой они решили, что 2.0 приложения не будут автоматически ** обновляться до 4.0 CLR. Это можно сделать, добавив запись supportedRuntimes в файл .config. – JaredPar

-1

В моем случае проблема была легко решена добавить предыдущую версию среды выполнения в app.config файл, как описано здесь https://msdn.microsoft.com/en-us/library/jj152935(v=vs.110).aspx

<?xml version="1.0"?> 
<configuration> 
    <startup> 
     <supportedRuntime version="<YOUR_VERSION>"/> 
    </startup> 
</configuration> 

В вашем случае, следуя выше документ должен быть «v2.0.50727 ", потому что эта строка также отображается как .NET 3.5.

список возможных вариантов есть https://msdn.microsoft.com/en-us/library/jj152935(v=vs.110).aspx

+0

Ваше решение легко сломает сборку :) Как я уже сказал, мое приложение - .NET 3.5. – Alex

+0

@Alex, я снова сделал ту же проблему, и я сделал поиск по этим строковым версиям. Согласно https://msdn.microsoft.com/en-us/library/jj152935(v=vs.110).aspx правильная строка для .NET 3.5 действительно «v2.0.50727». Если это правильно, исходный ответ был правильным. – campisano

Смежные вопросы