2010-08-17 17 views
7

Mam problem z VS 2010, który najwyraźniej traci zdolność do ładowania UpdatePanel w trakcie rozwoju i doprowadza mnie do szału. Korzystam z VS2010 i buduję kontrolę użytkownika w .NET 3.5, kierując na DNN 5.x.Błędy odniesienia biblioteki ASP.NET UpdatePanel

Utworzyłem formant, który ma być używany na stronie DNN, która korzysta z panelu aktualizacji. Kiedy rozwijam kontrolę, wysyłając FTP na stronę internetową i rozwijając ją, wszystko działa dobrze. Postanowiłem przenieść projekt do lokalnej kopii DNN i utworzyć projekt aplikacji internetowej do kontroli. Na początku wszystko działało dobrze. Po kilku buduje, zacząłem otrzymywać następujące błędy:

typu lub obszaru nazw „UpdateProgress” nie istnieje w obszarze nazw „System.Web.UI.WebControls.WebParts” (ARE brakuje zespołu odniesienie?)

typu lub obszaru nazwę „UpdatePanel” nie istnieje w obszarze nazw „System.Web.UI.WebControls.WebParts” (czy brakuje zespołu odniesienia?)

Pomyślałem, że coś zepsułem po drodze i wkręciłem odnośnik do bibliotek, więc wyładowałem wszystko i ponownie wczytałem odniesienia do biblioteki. Nadal dostaję błąd i nie mogę skompilować kontroli. W końcu zdecydowałem się przerobić cały projekt i zaimportować kod, który już napisałem. Wszystko działało dobrze, aż do kilku kompilacji później, gdy pojawił się ten sam błąd.

Postępowałem zgodnie z tymi samymi krokami, odciążając odniesienia, ponownie je ładując i ostatecznie usuwając projekt. Za każdym razem, gdy tworzę nowy projekt i kopiuję dokładnie ten sam kod do plików .ascx, działają dobrze ... dla kilku kompilacji. Zeszłej nocy skompilowałem bibliotekę i przetestowałem zmiany. Wszystko było świetnie, więc zamknąłem projekt i wyłączyłem maszynę. Włączyłem go dziś rano i otrzymałem błędy kompilacji. To tak, jakbym miał tykający czas w moim komputerze, który po prostu wyłącza te rzeczy.

Jakieś pomysły na temat tego, czego mi brakowało, mogą być przyczyną tego? Nie wiem, dlaczego biblioteka migotałaby i znikała w ten sposób. Nie natknąłem się jeszcze na ten problem z jakimkolwiek innym projektem na moim lokalnym komputerze i naprawdę nie chcę tego ponownie rozwijać poprzez FTPing do strony internetowej. Bleh!

+0

Po dodaniu referencje, spróbuj kliknąć referencję prawym przyciskiem myszy, wybierz właściwości i ustaw "Copy-local" na true. – Tchami

+0

@Tchami, właśnie wypróbowałem to (coś, o czym jeszcze nie pomyślałem) i wciąż mam te same błędy. –

+1

Może dodanie kontrolek System.Web.Extensions do konfiguracji sieci może działać. Sprawdź ASP.NET 3.5 projektów web.config – user67754

Odpowiedz

15

Moje rozwiązanie również dostało się w ten dziwny stan. Wystąpiło to po edycji konfliktów w web-config po otrzymaniu najnowszego oprogramowania AnkhSVN. Błąd pojawił się tylko na stronie, którą miałem otworzyć w Visual Studio w tym czasie. Powiedział, że nie może już zlokalizować UpdatePanel lub UpdateProgress w System.Web.UI, co nie miało sensu, ponieważ używam tych kontrolek na innych moich stronach.

The Fix:
Wystarczy przeciągnąć i upuścić UpdatePanel z przybornika na stronę rzuca błąd. Wyczyść i przebuduj, a ty jesteś gotowy. Pozostało ci tylko usunąć niedawno dodany UpdatePanel.
Wierzę, że robienie tego ponownie odsyła rzeczy do rozwiązania, którego nie widziałem.

+0

Nie natknąłem się na to od jakiegoś czasu (całkiem zrezygnowałem z Web Forms w ogóle), ale jeśli znowu się na to natknę, to na pewno spróbuję tego. Dzięki! –

+0

pracował dla mnie ... –

+7

Kiedy to zrobiłem, zmienił się z System.Web.UI.WebControls.UpdatePanel na System.Web.UI.UpdatePanel w pliku .designer.cs (który to naprawił). Myślę, że miało to związek z edycją pliku na innej maszynie. Będę musiał zajrzeć do tego później. Dzięki! – xr280xr

3

Jeśli przejrzysz nowy plik web.config, znajdziesz następujące (lub coś blisko) zostało dodane. Udało mi się dodać tę dyrektywę kompilatora bez żadnych innych zmian i pomyślnie ją skompilować. ScriptManager jest w starszej wersji rozszerzeń .dll i musi być związany. Wygląda na to, że utworzenie nowej strony doda dyrektywy kompilatora, ale aktualizacja nie.

<!--/system.webServer positional notes-->; 

<runtime> 
    <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

<!-- /configuration --> 
+2

dzięki za odpowiedź! Faktycznie odkryłem, że to dlatego, że umieszczam moje kontrolki DNN bezpośrednio w folderze DesktopModules (w oddzielnych projektach od reszty instalacji), więc nie mogłem mieć pełnego pliku web.config podczas testowania witryny. Podczas testowania zmieniam nazwę na web.config.old. W związku z tym utraciłbym wszystkie odniesienia do złożeń, gdy ponownie rozpocząłem projekt, jeśli nie zmieniłem go z powrotem przed zamknięciem Visual Studio. Dzięki za twoje myśli! –

+0

Twoja wzmianka o bibliotece System.Web.Extensions skłoniła mnie do dodania tego odniesienia do mojego projektu i teraz rozpoznaje System.Web.UI.UpdatePanel bez konieczności przechodzenia do interfejsu użytkownika lub zmiany wersji framework. – T0t3sMcG0t3s

1

Miałem ten sam problem we wszystkich moich starych projektach po aktualizacji do wersji 4.0. Próbowałem wielokrotnie badać, dlaczego tak się dzieje i nic, co znalazłem, nie zadziała. Mój zespół spędził ponad rok z ręcznym aktualizowaniem designer.vb dla UpdatePanel, aby mieć odpowiednie referencje za każdym razem, gdy zmieniliśmy ASPX.

Problem dotyczył odwołania do pliku projektu do AjaxControlToolkit. Odwołanie w pliku .vbproj dotyczyło wersji specyficznej dla wersji 3.5. Po prostu aktualizacja biblioteki DLL nie zaktualizowała odwołania. Rozwiązaniem było usunięcie odwołania do AjaxControlToolkit, zapisanie projektu, a następnie dodanie z powrotem odwołania do AjaxControlToolkit.dll.

Jeśli otwarty plik projektu w edytorze tekstowym, może widzieliście coś takiego:

<Reference Include="AjaxControlToolkit, Version=3.5.60623.0, Culture=neutral, 
    PublicKeyToken=28f01b0e84b6d53e, processorArchitecture=MSIL> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>bin\AjaxControlToolkit.dll</HintPath> 
</Reference> 

Jeśli nie wszystko prawo to powinno wyglądać następująco:

<Reference Include="AjaxControlToolkit"> 
    <HintPath>bin\AjaxControlToolkit.dll</HintPath> 
</Reference> 
Powiązane problemy