Wednesday, June 17, 2009

The type or namespace name 'Linq' does not exist in the namespace 'System'

  • เหตุการณ์คือ ก่อนหน้านี้ พัฒนาเว็บ asp.net บน xp ด้วย vs2005 ใช้ framework 2.0
  • พอเปลี่ยนไปใช้ windows 7 และ ลง vs2008 เขียน page form เพิ่ม 1 หน้า
  • นำ page form ใหม่ขึ้นบน server
  • รัน page ใหม่ไม่ได้ขึ้นประมาณ



Server Error in '/aaa' Application.
--------------------------------------------------------------------------------

Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)

Source Error:



Line 3: using System.Configuration;
Line 4: using System.Data;
Line 5: using System.Linq;
Line 6: using System.Web;
Line 7: using System.Web.Security;


Source File: f:\www\xxx\yyy.aspx.cs Line: 5


  • ทั้งที่บน server ได้ติดตั้ง framework 3.5 sp1 แล้วนะ เพียงแต่ เว็บเราที่ iis config เค้ายังเรียกใช้ framework 2.0 อยู่ แต่คิดว่าไม่น่าเกี่ยวกัน
  • ทดลองแก้ web.config บน server คือ เพิ่ม tag add assembly เกี่ยวกับ Linq เข้าไป หนึ่งบรรทัดก็ไม่หายนะ
  • <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
  • มาดู web.config บนเครืองที่พัฒนาเว็บ มันไม่ใช่แบบนี้น่ะสิครับ ไฟล์บน local เป็นแบบนี้
  • <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
  • แก้ใหม่ add ssembly="System.Xml.Linq..." ก็ไม่หายอ่ะ - -'
  • ที่นี้เลยลอง คัดลอก web.config บนเครื่อง dev ไปวางบน server (ก่อนทำ backup web.config บน server ไว้ก่อนกันเหนี่ยว)
  • page form อันใหม่ที่เขียน บน vs2008 ก็รันบน server 2003 iis 6.1 ได้แหละ
  • ก่อนหน้านี้พยายามแก้คอนฟิกให้ site เราเรียกใช้ asp.net framework 3.5 นะแต่ทำไม่เป็น แต่ยังไงก็รันได้แหละ ใช้ 2.0 ไม่มีปัญหารัน 3.5 ได้เหมือนเดิม แค่เราต้องลง framework 3.5 ไว้บน server ด้วยแค่นี้เอง

สรุป
  • บน server ต้องติดตั้ง framework 3.5
  • ถ้า คัดลอกแต่ page form อันใหม่ แล้วรันไม่ได้
  • ให้ดู web.config ต่างกันมากแค่ใหนคัดลอกจากเครื่อง dev ขึ้นบน server ได้เลย
  • คิดว่า web จะมีการ import library ผ่าน web.config นะ
  • backup กันเหนียว
  • อีกอย่างสังเกตดูใน web.config ที่เครื่อง dev
  • เห็นเค้าเรียกใช้ framework 1.0, 2.0, 3.5 รวมกันเลยหว่า

อ้างอิง

No comments:

Post a Comment

Popular Posts