2010-03-31 11 views
11

Chcę zaktualizować bibliotekę klas (pojedynczy plik DLL) w produkcyjnej aplikacji sieci Web. Ta aplikacja internetowa jest wstępnie skompilowana (opublikowana). Przeczytałem odpowiedź na StackOverflow (przepraszam, nie mogę tego już znaleźć, ponieważ funkcja wyszukiwania nie działa zbyt dobrze), co doprowadziło mnie do przekonania, że ​​mogę po prostu wkleić nową bibliotekę DLL w folderze bin i zostanie ona wybrana bez problemów (to spowodowałoby recykling WP, co jest w porządku ze mną, ponieważ nie używamy stanu sesji InProc).Aktualizowanie biblioteki DLL w produkcyjnym folderze bin witryny sieci Web ASP.NET

Jednakże, gdy próbowałem tego, moja strona wysadza się w powietrze i daje wyjątek FileLoadException, który mówi, że definicja manifestu zespołu nie pasuje do odwołania do zespołu. Co to takiego na świecie ?! Aktualizacja biblioteki DLL w Visual Studio i ponowne wdrożenie całej witryny działa dobrze, ale jest to ogromny problem z tyłu. Jaki jest sens posiadania oddzielnej biblioteki DLL, jeśli musisz ponownie wdrożyć całą witrynę, aby wprowadzić jakiekolwiek zmiany?

Oto pytanie: Jak mogę zaktualizować bibliotekę DLL w witrynie produkcyjnej bez przerywania aplikacji i bez ponownego wdrażania wszystkich plików?

+0

To jest "strona internetowa" w Visual Studio, przy okazji. Nie jestem pewien, czy to robi różnicę czy nie. –

Odpowiedz

9

Rzeczą do zapamiętania jest to, że istnieją stron internetowych i aplikacji internetowych miarę Visual Studio i ASPNET jest uważany.

Witryny sieci Web zazwyczaj zawierają wszystkie pliki aspx i vb publikowane na serwerze na żywo, a proces roboczy ASPNET rekompiluje aplikację za każdym razem przed prezentacją.

Po drugiej stronie znajduje się aplikacja internetowa, w której cały kod znajdujący się za plikami jest kompilowany do pojedynczego pliku DLL i po prostu wdrażasz strony aspx i folder bin z plikiem DLL do produkcji.

Istnieje również "hybrydowy" znany jako "Precompiled Web Sites" (zobacz link do oficjalnego przeglądu MSDN), w którym nie ma pojedynczego układu DLL aplikacji internetowej, ale cała kompilacja witryny jest Zrobione dla Ciebie. Istnieje kilka "trybów" w zależności od Twoich potrzeb.

Wydaje mi się, że Twój błąd został spowodowany, ponieważ Twoja witryna jest skonfigurowana jako witryna internetowa z pewnego rodzaju prekompilacją. Używanie wstępnie skompilowanego modelu jest trochę bardziej "surowe", ponieważ zakłada, że ​​pewne pliki/podpisy są na miejscu. Posiadanie zaktualizowanej wersji pliku DLL powoduje przerwę, ponieważ prekompilacja wymaga nazwy i wersji pliku.

Jeśli to możliwe, najlepiej jest przekonwertować aplikację internetową, ponieważ można bez problemu dodać dodatkowe pliki DLL do produkcji. W przeciwnym razie spójrz na numer this matrix, aby zobaczyć, jaką formę prekompilacji potrzebujesz dla swojej aplikacji.

+0

+1 Dzięki, to jest dobra odpowiedź. Wciąż jestem nieco zdezorientowany w procesie konwersji aplikacji internetowych. Co jest dokładnie związane z "konwersją do aplikacji internetowej"? Dzięki jeszcze raz! –

+0

Powinieneś być w stanie kliknąć prawym przyciskiem myszy na pliku projektu i wybrać "Konwertuj na aplikację internetową" i zrobi to za ciebie. –

+0

Nie mam opcji "Konwertuj na aplikację sieci Web" w moim menu kontekstowym eksploratora rozwiązań. Mam profesjonalną edycję VS2008. Nie jestem ślepy, po prostu go tam nie ma! Czy jest jakiś dodatek, który jest mi potrzebny? Dzięki. –

1

Spójrz na ten wpis SO, może być tym, do którego się odnosisz. The located assembly's manifest definition does not match the assembly reference

+0

To nie ten. Miał odpowiedź, która mówi coś do skutku "Tak, po prostu upuść nową bibliotekę DLL w folderze bin, a to będzie recykling puli aplikacji i zostanie pobrane." To była zaakceptowana odpowiedź i kilka razy została poddana pod głosowanie. Zostawiłem komentarz do odpowiedzi na temat FileLoadException. –

0

Zobacz referencję. Czy jest napisane "konkretna wersja = true"? Ustaw go na false, ponownie opublikuj swoją aplikację (musisz to zrobić raz, ponieważ teraz Twoja aplikacja wciąż szuka zestawu z określonym manifestem) i spróbuj ponownie.

+0

Gdzie znajdę tę "określoną wersję"? –

+0

We właściwościach odniesienia. Rozwiń odniesienia, kliknij prawym przyciskiem myszy konkretne odwołanie, kliknij właściwości. –

+0

Nie mogę znaleźć tego, o czym mówisz.To jest strona internetowa, a nie aplikacja internetowa. –

Powiązane problemy