2010-08-17 48 views
7

Tôi đang gặp vấn đề với VS 2010 dường như mất khả năng tải UpdatePanel ở giữa phát triển và điều đó khiến tôi phát điên. Tôi đang sử dụng VS2010 và xây dựng một điều khiển người dùng với .NET 3.5, nhắm mục tiêu DNN 5.x.ASP.NET UpdatePanel lỗi tham khảo thư viện

Tôi đã tạo một điều khiển để sử dụng trên trang web DNN sử dụng bảng cập nhật. Khi tôi phát triển sự kiểm soát bằng FTP đến trang web và phát triển trên nó, mọi thứ hoạt động tốt. Tôi quyết định chuyển phát triển sang một bản sao cục bộ của DNN và tạo một dự án ứng dụng web để kiểm soát. Mọi thứ đã hoạt động tốt ngay từ đầu. Sau một vài xây dựng, tôi bắt đầu nhận được các lỗi sau đây:

Loại hoặc namespace tên 'UpdateProgress' không tồn tại trong không gian tên 'System.Web.UI.WebControls.WebParts' (là bạn thiếu một lắp ráp tham khảo?)

loại hoặc namespace tên 'UpdatePanel' không tồn tại trong không gian tên 'System.Web.UI.WebControls.WebParts' (là bạn thiếu một lắp ráp tham khảo?)

Tôi nhận ra rằng mình đã làm rối tung thứ gì đó trên đường đi và làm hỏng tài liệu tham khảo đến thư viện, vì vậy tôi đã tải mọi thứ và tải lại tài liệu tham khảo trong thư viện. Tôi tiếp tục nhận được lỗi và không thể biên dịch điều khiển. Cuối cùng, tôi quyết định làm lại toàn bộ dự án và nhập mã mà tôi đã viết. Tất cả mọi thứ đã được làm việc tốt cho đến khi một vài xây dựng sau này khi cùng một lỗi xuất hiện.

Tôi đã làm theo tất cả các bước tương tự, dỡ các tham chiếu, tải lại chúng và cuối cùng xóa dự án. Mỗi khi tôi tạo một dự án mới, và sao chép chính xác cùng một mã vào các tệp .ascx, chúng hoạt động tốt ... cho một vài bản dựng. Tối qua, tôi biên soạn thư viện và kiểm tra những thay đổi. Mọi thứ đều tuyệt vời nên tôi đã đóng cửa dự án và tắt máy. Đã bật nó vào sáng nay và nhận được lỗi xây dựng. Nó giống như tôi có một timebomb ticking trong máy tính của tôi mà chỉ cần tắt những thứ này đi.

Bất kỳ ý tưởng nào về những gì tôi thiếu có thể gây ra điều này? Tôi không biết tại sao một thư viện sẽ nhấp nháy như thế này. Tôi chưa gặp phải vấn đề này với bất kỳ dự án nào khác trên máy cục bộ của tôi và tôi thực sự không muốn phát triển điều này thông qua FTP vào trang web, một lần nữa. Bleh!

+0

Sau khi thêm tham chiếu, hãy thử nhấp chuột phải vào tham chiếu, chọn thuộc tính và đặt "Sao chép địa phương" thành true. – Tchami

+0

@Tchami, chỉ cần thử nó (một cái gì đó tôi đã không nghĩ đến được) và vẫn còn nhận được các lỗi tương tự. –

+1

Có thể việc thêm các điều khiển của System.Web.Extensions vào cấu hình web có thể hoạt động. Kiểm tra một dự án asp.net 3.5 web.config – user67754

Trả lời

15

Giải pháp của tôi cũng rơi vào trạng thái kỳ lạ này. Nó xảy ra sau khi chỉnh sửa xung đột trong cấu hình web sau khi sử dụng AnkhSVN mới nhất. Lỗi chỉ hiển thị trong trang tôi đã mở trong Visual Studio tại thời điểm đó. Nó cho biết nó không còn có thể xác định vị trí UpdatePanel hoặc UpdateProgress trong System.Web.UI, điều này không có ý nghĩa bởi vì tôi sử dụng các điều khiển này trong các trang khác của tôi.

Sửa lỗi:
Chỉ cần kéo và thả UpdatePanel từ hộp công cụ vào trang để ném lỗi. Sạch sẽ và xây dựng lại và bạn tốt để đi. Tất cả những gì bạn cần làm là xóa UpdatePanel mà bạn vừa thêm vào.
Tôi tin rằng việc này sẽ kết nối lại mọi thứ trong giải pháp mà tôi không thể nhìn thấy.

+0

Tôi đã không chạy vào điều này trong một thời gian (khá nhiều đã từ bỏ trên các hình thức Web nói chung) nhưng nếu tôi chạy vào nó một lần nữa tôi sẽ chắc chắn để thử này ra. Cảm ơn! –

+0

làm việc cho tôi ... –

+7

Khi tôi thực hiện điều này, nó đã thay đổi từ System.Web.UI.WebControls.UpdatePanel thành System.Web.UI.UpdatePanel trong tệp .designer.cs (đã sửa nó). Tôi nghĩ rằng điều này đã làm với chỉnh sửa các tập tin trên máy khác. Tôi sẽ phải xem xét nó sau này. Cảm ơn! – xr280xr

3

Nếu bạn kiểm tra tệp web.config mới, bạn sẽ tìm thấy phần sau (hoặc thứ gì đó đã đóng) được thêm vào. Tôi đã có thể thêm chỉ thị trình biên dịch này mà không có thay đổi nào khác và biên dịch thành công. ScriptManager nằm trong phiên bản cũ của tiện ích mở rộng .dll và cần được ràng buộc. Có vẻ như việc tạo một trang web mới sẽ bổ sung thêm các chỉ thị của trình biên dịch nhưng việc nâng cấp thì không.

<!--/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

cảm ơn bạn đã trả lời! Tôi thực sự thấy rằng đó là bởi vì tôi đặt điều khiển DNN của tôi trực tiếp trong thư mục DesktopModules (trong các dự án riêng biệt từ phần còn lại của tiến trình cài đặt) nên tôi không thể có web.config đầy đủ khi tôi kiểm tra trang web. Tôi sẽ đổi tên nó thành web.config.old khi thử nghiệm. Như vậy, tôi sẽ mất tất cả các tham chiếu đến các assembly khi tôi khởi động lại dự án nếu tôi không đổi tên nó lại trước khi đóng Visual Studio. Cảm ơn những suy nghĩ của bạn, mặc dù! –

+0

Việc bạn đề cập đến thư viện System.Web.Extensions dẫn tôi thêm tham chiếu đó vào dự án của tôi và bây giờ nó nhận ra System.Web.UI.UpdatePanel mà không cần phải đi vào giao diện người dùng hoặc thay đổi phiên bản khung công tác. – T0t3sMcG0t3s

1

Tôi đã gặp vấn đề tương tự trong tất cả các Dự án cũ của mình sau khi cập nhật lên Framework 4.0. Tôi đã thử nhiều lần nghiên cứu lý do tại sao điều này xảy ra và không có gì tôi tìm thấy sẽ hoạt động. Nhóm của tôi đã dành hơn một năm sống với việc cập nhật thủ công designer.vb cho UpdatePanel để có tham chiếu chính xác mỗi khi chúng tôi thay đổi ASPX.

Sự cố đã xảy ra trong tham chiếu của tệp dự án đối với AjaxControlToolkit. Tham chiếu trong tệp .vbproj là phiên bản dành riêng cho 3.5. Vì vậy, chỉ cần cập nhật các DLL đã không cập nhật các tài liệu tham khảo. Giải pháp là loại bỏ tham chiếu AjaxControlToolkit, lưu dự án, và sau đó thêm lại tham chiếu đến AjaxControlToolkit.dll.

Nếu bạn đã mở hồ sơ dự án trong một trình soạn thảo văn bản, bạn có thể đã thấy một cái gì đó như thế này:

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

Nếu bạn đã làm mọi thứ đúng nó sẽ giống như thế này:

<Reference Include="AjaxControlToolkit"> 
    <HintPath>bin\AjaxControlToolkit.dll</HintPath> 
</Reference> 
Các vấn đề liên quan