Dlaczego jak pare programów napisałem na windows xp w net framework 2.0 (i tak też jest z gotowymi aplikacjami demo z code project) to jak próbuję je uruchomić na windows server 2008 (coś prawie takie samo jak vista) z zainstalowanym net 3.5 to pokazuje mi okienko że błąd programu wystąpił, close program.. ?
"prawie" - to Ty chyba jednego albo drugiego nie widziałeś :P
Jakie okienko, co w nim jest napisane?
programy wymagaja zeby byl zainstalowany dokladnie taki sam framework na jakim zostaly skompilowane. szczesliwie, na danej maszynie mozesz miec zainstalowana dowolna ilosc roznych wersji .Net. szczerze, lepiej zainstaluj je z gory wszystkie zeby sie nie irytowac.. (ok, daruj sobie 1.0.. instaluj 1.1, 2.0, 3.0, 3.5 i nowsze)
a, a jesli to byly programy w C++/CLI lub korzystajace z czegokolwiek z native'a, to do tego jeszce musisz miec zainstalowane wszystkie redisty..
@quetzalcoatl: Nie zgadzam się. 3.0 = 2.0 + WPF/WCF/WF. Zainstalowanie 3.0 automatycznie instaluje 2.0, nie musisz oddzielnie instalować tych dwóch. Mam kilka komputerów na których mam tylko 3.0 i 3.5 (lub sam 3.5), a programy kompilowane pod 2.0 działają.
Ja mam tylko 3.5 i wszystko z 2.0 chodzi.
Tylko 1.0 i 1.1 to inna bajka.
Dam ci radę, jak rozwiązać problem:
Skorzystaj z napisanej w tym wątku przeze mnie konsoli:
http://4programmers.net/Forum/viewtopic.php?id=139652
Następnie całą główną funkcje main obejmij w try/catch:
public static void Main(){
try{}catch(Exception ex){
LogConsole.WriteLine(ex.ToString);
}
}
I będziesz miał w pliku informację o tym co ci przeszkadza w uruchomieniu programu.
Chciałbym jeszcze dodać, bo może niektórzy nie wiedzą: Napis "Program wykonał nieprawidłową operację..." To tak naprawdę wyjątek wychodzący poza obszar funkcji main, lub wyrzucony poza obszarem tej funkcji.
Ktos napisał(a)
@quetzalcoatl: Nie zgadzam się. 3.0 = 2.0 + WPF/WCF/WF. Zainstalowanie 3.0 automatycznie instaluje 2.0, nie musisz oddzielnie instalować tych dwóch. Mam kilka komputerów na których mam tylko 3.0 i 3.5 (lub sam 3.5), a programy kompilowane pod 2.0 działają.
zgadza sie. - 3.0 to byl tylko zestaw paru dodatkow, a caly runtime i tak chodzil na 2.0. nie bylem zas pewien co do 3.5, stad taka rada
..inna sprawa, ze po przeczytaniu posta huberta i jeszcze raz tego poczatkowego - zaczyna mi sie wydawac ze rzeczywiscie nie chodzi o blad uruchomienia, tylko blad podczsa pracy..
spompiluj program pod windows 2008 i ci bedzie na wszystich chodzic :)
a problem polega na DLL i ich brakiem na niektorych systemach.
Chciałbym jeszcze dodać, bo może niektórzy nie wiedzą: Napis "Program wykonał nieprawidłową operację..." To tak naprawdę wyjątek wychodzący poza obszar funkcji main, lub wyrzucony poza obszarem tej funkcji.
Dokładniej mówiąc wyjątek ten jest generowany po skoku w nieznane :) tj. gdy program skoczy poza wszystkie bloki natywnego kodu wykonywalnego i pojawi się błędna instrukcja której procesor nie może wykonać (jakieś dane albo w tym przypadku może .NET'owy bytecode). Tego nie jestem pewien, ale możliwe że maszyna wirtualna też rzuca taki wyjątek jak trafi na bytecode którego nie może zinterpretować/wykonać.
swiss555 napisał(a)
spompiluj program pod windows 2008 i ci bedzie na wszystich chodzic :)
a problem polega na DLL i ich brakiem na niektorych systemach.
Raczej kilkudziesięciu dll'ek i nie tylko.
Co do wersji - 3.5 jest kompatybilnie wsteczny tylko do 3.0. Instalka 3.5 zawiera 2 wersje bibliotek - 3.5 oraz 2.0. Nie spotkałem się z instalką gdzie 3.5 byłoby oddzielone od 2.0. Ale nie wiem jak z Windowsem 2008, możliwe że domyślnie ma tylko 3.5.
W każdym razie pelno1 sprawdź co masz zainstalowane %WINDIR%\Microsoft.NET\Framework\wersja*.dll.