2012-04-26 36 views
7

Tôi đã tạo một "Trang Web Rỗng ASP.NET" trong Visual Studio Express 2010.Có một lời giải thích đằng sau lỗi "Tên kiểu hoặc không gian tên 'Tập lệnh' không tồn tại trong không gian tên 'System.Web'"

Trên một tệp mã trong App_Code, tôi có dòng "using System.Web.Script.Serialization;"

Khi tôi đẩy các tập tin đến máy chủ, tôi đã nhận lỗi sau:

Exception message: c:\inetpub[....]\Extensions.cs(10): error CS0234: The type or namespace name 'Script' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)

(. Các máy chủ đang chạy Windows Server 2008 với IIS 7 với ASP.NET 4.0 được cài đặt)

Kể từ đây là một trang web và không phải là một dự án web, tôi không thể sử dụng tính năng "xuất bản" như được quảng bá tại đây: The type or namespace name 'Script' does not exist in the namespace 'System.Web'

Cuối cùng, sau khi tìm hiểu, tôi đã tìm ra không gian tên này được bao gồm trong System.Web .Tăng cường, và tôi phải tay bao gồm nó qua web.config:

<compilation debug="true" targetFramework="4.0"> 
    <assemblies> 
     <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </assemblies> 
</compilation> 

Vì vậy, câu hỏi của tôi: là có một cách tốt hơn để đi về điều này?

Vì không cần điều này trong dự án địa phương của tôi, trước tiên tôi có thể xác định xem những assembly nào tôi cần tham khảo một cách thủ công, và làm thế nào để tôi có được thông tin cần thiết để tham khảo. lấy PublicKeyToken)?

CẬP NHẬT

Bởi vì đây là một trang web và không phải là một dự án Web, danh sách các tài liệu tham khảo không hiển thị cho đến sau tôi thêm chúng vào Web.Config bằng tay.

Vì vậy, để chọn "Sao chép địa phương" thành "đúng" không hoạt động trong trường hợp này.

Trả lời

14

Có vẻ như nhà cung cấp của bạn không có dll System.Web.Extensions trong GAC.

Không gian tên System.Web.Scripts là một phần của System.Web.Extensions.dll.

Bạn có thể giải quyết vấn đề của mình nếu bạn làm.

  1. Chọn System.Web.Extensions trong dự án của bạn Tham khảo
  2. Tới tab thuộc tính và thiết lập Copy Local để true

này đảm bảo rằng bạn triển khai dll này quá.

enter image description here

enter image description here

+0

Nếu tôi đang xem trang web trong VS Express, khi tôi bấm vào để xem các tài liệu tham khảo, danh sách trống (trừ khi tôi thêm chúng bằng tay vào web.config đầu tiên), và do đó Tôi không thể đặt "Sao chép địa phương" thành "đúng". Tôi nghĩ rằng điều này sẽ hoạt động nếu đó là một dự án Web thực sự và không chỉ là một trang web đơn giản trong VS. – dochoffiday

1

Chỉ cần thêm System.Web.Extensions như một tài liệu tham khảo để dự án của bạn. Bạn không phải làm điều đó bằng tay thông qua web.config. Đặt Sao chép địa phương thành true để đảm bảo nó được đưa vào phân phối của bạn.

1

bạn có thể nhấp chuột phải vào tên dự án/vị trí trong dự án trang web của bạn và chọn Thêm tham chiếu .... Từ đó một hộp thoại sẽ hiển thị. Chọn tab .NET và chọn System.Web.Extensions. Điều này sẽ thêm nó vào dự án. Bạn có thể thực hiện việc này cho bất kỳ không gian tên nào mà bạn cần thêm.

0

Vấn đề của tôi tương tự, vì tôi đang làm một ứng dụng WPF. Việc thêm tham chiếu Tiện ích mở rộng không đủ để Intelisense phát hiện những gì tôi cần để tạo JavaScriptSerializer. Sau này tôi phát hiện ra mình cần thêm vào bằng cách sử dụng System.Web.Script.Serialization; và sau đó nó đã làm việc :)

Các vấn đề liên quan