2011-09-06 16 views
6

Oto interesująca. Mam mały plik wykonywalny zbudowany na platformie .NET 2.0, aby zapewnić działanie na wielu różnych platformach. Jest to program jednosilnikowy i odnosi się tylko do przestrzeni nazw System. *.Jak obsługiwać .NET 2.0 i .NET 4.0 w jednej aplikacji?

Po uruchomieniu go w systemie operacyjnym z zainstalowanym .NET 2.0, działa poprawnie. Nie będzie działać na systemie operacyjnym z zainstalowanym tylko .NET 4.0, z powodu nowego środowiska wykonawczego wprowadzonego w .NET 4.0. W rezultacie dodałem obsługiwane informacje o środowisku wykonawczym do pliku app.config, zgodnie z opisem here. Dodałem dwa obsługiwane czasy pracy:

<supportedRuntime version="2.0.50727" /> 
<supportedRuntime version="4.0" /> 

Teraz kiedy uruchomić aplikację w systemie z zainstalowanym .NET 2.0, nie powiedzie się uruchomić:

enter image description here

Nie ma znaczenia, w którym aby zdefiniować obsługiwane środowiska wykonawcze, inne niż kolejność żądanych wersji w zmianach komunikatów o błędach, aby odzwierciedlić zmiany w pliku app.config (aby CLR najwyraźniej prawidłowo podniósł te informacje). Mam zainstalowaną .NET 2.0 i twierdzi, że muszę zainstalować .NET 2.0! Próbowałem naprawić instalację .NET 2.0 bez powodzenia. Odtworzyłem to zachowanie na drugiej maszynie.

Co może być przyczyną niepowodzenia?

Odpowiedz

11

Wierzę, że może prostu zostały pominięte na zewnątrz v:

<supportedRuntime version="v2.0.50727" /> 
<supportedRuntime version="v4.0" />