ในทีมของเรา เรามีโครงการฐานข้อมูลใน Visual Studio 2008 ซึ่งอยู่ภายใต้การควบคุมแหล่งที่มาโดย Team Foundation Server ทุกสองสัปดาห์โดยประมาณ หลังจากที่เพื่อนร่วมงานคนหนึ่งเช็คอิน ไฟล์โปรเจ็กต์จะไม่โหลดบนเครื่องของนักพัฒนารายอื่น ข้อความแสดงข้อผิดพลาดคือ:
ไม่สามารถโหลดไฟล์โครงการได้ ข้อมูลในระดับรากไม่ถูกต้อง บรรทัดที่ 1 ตำแหน่งที่ 1
เมื่อฉันดูไฟล์โครงการใน Notepad++ ไฟล์จะมีลักษณะดังนี้:
��<NUL?NULxNULmNULlNUL NULvNULeNULrNULsNULiNULoNULnNUL
...
และอื่นๆ (คุณสามารถเห็น <?xml version
ในนี้) ในขณะที่ไฟล์โปรเจ็กต์ปกติจะมีลักษณะดังนี้:
<?xml version="1.0" encoding="utf-16"?>
...
อาจมีบางอย่างผิดปกติกับการเข้ารหัสไฟล์ นี่เป็นปัญหาสำหรับเราเนื่องจากเป็นไปไม่ได้เลยที่จะเข้ารหัสไฟล์ให้ถูกต้องอีกครั้ง 'วิธีแก้ปัญหา' คือการทิ้งไฟล์โครงการและรับเวอร์ชันการทำงานล่าสุดจากการควบคุมแหล่งที่มา
ตามไฟล์ การเข้ารหัสควรเป็น UTF-16 ตาม Notepad++ ไฟล์ที่เสียหายคือ UTF-8 จริงๆ
คำถามของฉันคือ:
- เหตุใด Visual Studio จึงทำให้การเข้ารหัสไฟล์โครงการยุ่งเหยิงทั้งในเวลาสุ่มและที่เครื่องสุ่ม
- เราควรทำอย่างไรเพื่อป้องกันสิ่งนี้?
- เมื่อเกิดขึ้น มีความเป็นไปได้ที่จะกู้คืนไฟล์ปัจจุบันด้วยการเข้ารหัสที่ถูกต้อง แทนที่จะดึงเวอร์ชันเก่าจากการควบคุมแหล่งที่มาหรือไม่
ตามหมายเหตุล่าสุด: ปัญหาอยู่ที่ไฟล์โปรเจ็กต์เดียว ไฟล์โปรเจ็กต์อื่นๆ ทั้งหมดไม่ทำให้เกิดปัญหานี้
อัปเดต: ขอบคุณคำแนะนำของ Jon Skeet ฉันมีคำตอบสำหรับคำถามข้อที่สาม เมื่อฉันแทนที่เก้าไบต์แรก EF BB BF EF BF BD EF BF BD ด้วยสองไบต์ FF FE ไฟล์โปรเจ็กต์จะโหลดอีกครั้ง
นี่ยังคงเป็นคำถามว่าทำไม Visual Studio ทำให้ไฟล์เสียหาย