2011-01-26 37 views
23

Tôi có một số câu hỏi chung về web.config và cách nó hoạt động liên quan đến tham chiếu assembly. Tôi đã được chơi xung quanh với công cụ xem Razor mới và đã có một số vấn đề nhận được nó và chạy.Thêm tham chiếu assembly trong web.config

Vấn đề của tôi bắt đầu với một vị tướng

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

Bây giờ tôi đã nhận ra đây chỉ là một Tài liệu tham khảo đơn giản cho dự án và tôi đang trên đường đi. Nhưng ngay cả sau khi tôi thêm một tham chiếu đến hội đồng còn thiếu, dự án của tôi vẫn tiếp tục phá vỡ.

Tôi đã tìm thấy giải pháp và tôi phải thêm tham chiếu lắp ráp trong web.config. Một khi tôi đã làm tất cả mọi thứ này làm việc tốt.

Đầu tiên, tôi muốn hiểu tại sao nó lại thêm tham chiếu đến web.config để khắc phục vấn đề này. Tại sao không phải là một dự án tham khảo vừa đủ tốt?

Thứ hai, khi nói đến việc thêm tham chiếu trong web.config, tôi muốn hiểu cú pháp. Khi tôi thấy đánh dấu như thế này

<add assembly="System.Web.WebPages" />

có vẻ như rất rõ ràng với tôi rằng tôi thêm một assembly có tên là System.Web.WebPages. Nhưng cú pháp đầy đủ trong web.config của tôi là

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Version dường như tự giải thích, nhưng là những gì văn hóa và PublicKeyToken sử dụng cho? Họ có cần thiết không? Điều gì sẽ xảy ra nếu tôi không biết một trong số họ, tôi có thể đặt bất cứ thứ gì vào không?

Trả lời

7

trả lời của bạn đầu tiên câu hỏi:

Có một SO câu hỏi ở đây với một câu trả lời hữu ích:

What is difference between web.config assemblies element and project file Reference element

Về cơ bản nó là để làm với sự khác biệt giữa các dự án Web và các dự án phi web trong Visual Studio (như tôi đã hiểu).

trả lời của bạn thứ hai câu hỏi:

này mất khá nhiều đào bới xung quanh nhưng ở đây bạn đi:

Văn hóa - hầu hết hội nên văn hóa trung tính (giả sử này được thiết lập trong ứng dụng). Tuy nhiên nếu bạn có hội đồng nhạy cảm về văn hóa thì đây là nơi bạn chỉ định văn hóa của hội đồng.

PublicKeyToken - đây là khóa công khai từ cặp khóa công khai/riêng được sử dụng để ký tên vào hội đồng. Việc này cho phép .NET xác minh rằng assembly đang nạp là đúng.

Xem thêm thông tin hữu ích ở đây:

http://en.wikipedia.org/wiki/.NET_assembly

3

Một câu hỏi cũ, đã trả lời, nhưng tôi đi qua nó và muốn thêm:

Tầm quan trọng của một chính Mã công cộng là nó là hoàn toàn cần thiết cho một hội đồng được đặt tên mạnh mẽ. Trong thực tế, đó là cách bạn nhận được một PKT: Đăng ký lắp ráp (tạo ra một tên mạnh). Và bạn không thể lưu trữ một hội đồng trong GAC mà không ký nó.

Vì vậy, nó không chỉ là vấn đề xác định lắp ráp ... đó là một cách mã hóa cho .NET để xác thực chữ ký của một hội đồng, và để đảm bảo rằng nó không bị giả mạo.

0

Mọi người dường như đang đưa ra 'xung quanh' với câu trả lời này. Thật đơn giản:

<configuration> 
    <system.web> 
     <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      </assemblies> 
     </compilation> 
    </system.web> 
</configuration> 
+0

Câu trả lời này không trả lời các câu hỏi của OP: văn hóa và PublicKeyToken được sử dụng để làm gì? Họ có cần thiết không? Điều gì sẽ xảy ra nếu tôi không biết một trong số họ, tôi có thể đặt bất cứ thứ gì vào không? –

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