เปลี่ยนโครงการ C ++ / CLI เป็นกรอบงานอื่นมากกว่า 4.0 ด้วย vs2010


153

ตั้งแต่ฉันอัพเกรดโครงการเป็นรูปแบบโครงการ visual studio 2010 โครงการ C ++ / CLI ของฉันจึงเป็นเป้าหมายเป็น. net framework 4.0

มันง่ายที่จะเปลี่ยนเวอร์ชั่นเฟรมเวิร์กเป็นเวอร์ชันอื่นจากโปรเจ็กต์ C # แต่ฉันไม่รู้ว่าจะทำสิ่งนี้ได้อย่างไรในโครงการ C ++ / CLI ฉันไม่เห็นการตั้งค่านี้ในหน้าคุณสมบัติโครงการ

คำตอบ:


190

สิ่งนี้จะปรากฏขึ้นเมื่อคุณกด F1 ในกรอบโต้ตอบ Framework and References:

โดยค่าเริ่มต้นสำหรับโครงการใหม่กรอบงานเป้าหมายถูกกำหนดเป็น. NET Framework 4 IDE ไม่สนับสนุนการแก้ไขกรอบงานเป้าหมาย แต่คุณสามารถเปลี่ยนได้ด้วยตนเอง ในไฟล์โครงการ (.vcxproj) เฟรมเวิร์กเป้าหมายเริ่มต้นจะถูกแสดงด้วยองค์ประกอบคุณสมบัติ v4.0 เมื่อต้องการเปลี่ยนเฟรมเวิร์กเป้าหมายให้ยกเลิกการโหลดโครงการใช้เท็กซ์เอดิเตอร์เพื่อเปิดไฟล์โปรเจ็กต์จากนั้นเปลี่ยนค่าของอิลิเมนต์คุณสมบัติจาก v4.0 เป็นเวอร์ชันอื่นที่ติดตั้งบนเซิร์ฟเวอร์ของคุณ ตัวอย่างเช่นถ้าคุณระบุ v3.5 ซึ่งหมายถึง v3.5 .NET Framework, Visual Studio 2008 SP1 จะต้องติดตั้ง บันทึกและปิดไฟล์โหลดโครงการอีกครั้งและตรวจสอบว่าเฟรมเวิร์กเป้าหมายแสดงในหน้าคุณสมบัติ *

ไม่ถูกต้องอย่างมากในโครงการที่แปลงแล้วคุณจะต้องเพิ่ม<TargetFrameworkVersion>องค์ประกอบเอง ใส่ใน PropertyGroup ที่มีข้อความ "Globals":

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

เรื่องราวแตกต่างกันเมื่อคุณใช้ VS2012 ขึ้นไปเวอร์ชันแรกของ VS ที่ได้รับการตั้งค่าชุดเครื่องมือแพลตฟอร์มในหน้าคุณสมบัติทั่วไป จากนั้นคุณต้องเลือก "v90" เพื่อรับบิลด์ที่เหมาะสมที่เป้าหมาย 3.5 อย่างไรก็ตามมันเงอะงะคุณต้องติดตั้ง VS เวอร์ชันกลางทั้งหมดลงบนเครื่องเพื่อให้การเลือกนั้นพร้อมใช้งาน

ทำไมคุณต้องติดตั้ง VS2008 ต้องการคำอธิบายด้วยตัวเอง ปัญหาหลักคือไลบรารีรันไทม์ C (msvcrt100.dll ขึ้นไป) มีรหัส. NET เพื่อรองรับการเรียกใช้โค้ดที่ได้รับการจัดการ รายละเอียดที่สำคัญคือโมดูลเริ่มต้นที่ทำให้มั่นใจได้ว่า CRT จะเริ่มต้นได้อย่างถูกต้องในโปรแกรมที่ใช้รหัส C ++ / CLI รหัสนั้นมักจะเป็นเป้าหมายของ. NET 4 และเนื่องจากเป็นการยากใน msvcrt100.dll (และสูงกว่า) คุณจะต้องพึ่งพาฮาร์ดร็อคในรันไทม์ v4.0.30319 คุณสามารถมีการอ้างอิง v2.0.50727 ที่แท้จริงได้เฉพาะเมื่อคุณใช้รันไทม์ C เก่าคือ msvcrt90.dll คุณสามารถมั่นใจได้ว่าคุณมีการพึ่งพา msvcrt90.dll เมื่อคุณใช้ #include ไฟล์ของ VS2008 ของคอมไพเลอร์

ความจริงที่แย่มากมันจำเป็นต้องย้ายไปที่. NET 4 เร็ว ๆ นี้คุณจะต้องต่อสู้กับปัญหาการสร้างเช่นนี้ถ้าคุณไม่ทำ มีอุปสรรคในทางปฏิบัติน้อยมากที่ NET 4 สามารถใช้ได้อย่างกว้างขวางฟรีกับทุกเป้าหมายที่คุณคาดคิด การเอาชนะ FUD ที่เกี่ยวข้องกับการย้ายไปยังเวอร์ชันรันไทม์ที่สูงกว่านั้นเป็นเรื่องจริงเท่านั้น ไม่มีเหตุผลสำหรับความกลัวและความสงสัยมันมีเสถียรภาพ


8
ตอนนี้ฉันทำตามขั้นตอนเหล่านี้แล้ว แต่ตอนนี้ฉันได้รับข้อผิดพลาด "MSB8009: .NET Framework 2.0 / 3.0 / 3.5 เป้าหมายชุดเครื่องมือแพลตฟอร์ม v90 โปรดตรวจสอบให้แน่ใจว่าติดตั้ง Visual Studio 2008 บนเครื่องแล้ว" ฉันไม่มี VS2008
codymanix

8
อ้างจากคำตอบของฉัน: "ต้องติดตั้ง Visual Studio 2008 SP1" คุณไม่มีเครื่องมือสร้างที่จำเป็น
Hans Passant

2
อาจเป็นเพราะคุณจะต้องลบไฟล์. suo และเปิดโซลูชันอีกครั้ง อย่างที่มันเป็นในกรณีของฉัน
alehro

ฉันใช้งานได้ง่ายเพียงติดตั้ง Visual Studio 2008 express (ฟรี) ที่จริงฉันได้รับข้อผิดพลาดมากมายเมื่อฉันเปลี่ยนชุดเครื่องมือแพลตฟอร์มเป็น v90 กลับไปที่ v100 แก้ไขทั้งหมด!
simon.d

4
เมื่อสร้าง. NET Framework 4.0- โปรแกรมที่ใช้ C ++ / CLI และ C # - โครงการโดยใช้ Visual Studio 2010 การติดตั้ง. NET Framework 4.5 (หรือ Visual Studio 2013 ซึ่งมาพร้อมกับ. NET Framework 4.5) ทำให้โครงการ C ++ / CLI ใน VS 2010 จะถูกสร้างขึ้นกับ 4.5 แทนที่จะเป็น 4.0 เดิม เมื่อคุณมี C # - โครงการที่สร้างขึ้นจาก 4.0 ในโซลูชันเดียวกันที่อ้างอิงถึงโครงการ C ++ / CLI- การแบ่งนี้ การแทรก <TargetFrameworkVersion> v4.0 </TargetFrameworkVersion> ในไฟล์ vcxproj ของโครงการ C ++ / CLI-project แก้ปัญหานี้ได้ \ o /
Daniel Albuschat

18

ใช่เป็นไปได้ที่จะเปลี่ยนเป้าหมายแม้สำหรับโครงการ C ++ ที่มีการจัดการ:

การเปลี่ยน Target .NET Framework สำหรับ C ++ / CLI (VS 2010) เมื่อต้องการเปลี่ยนเวอร์ชันของ. NET Framework สำหรับ C ++ / CLI project (VS 2010)

คลิกขวาที่โครงการในโซลูชัน Explorer และคลิกยกเลิกการโหลดโครงการคลิกขวาที่โครงการที่ไม่ได้โหลดในโซลูชัน Explorer และเลือกแก้ไข <projectname>.vcxprojในโครงการไฟล์ XML ค้นหาโหนด<PropertyGroup Label="Globals">ในโหนดนั้นค้นหาโหนด<TargetFrameworkVersion>(ถ้าไม่พบโหนดเพิ่ม) ข้อความภายในของโหนดจะกำหนด กรอบเป้าหมาย สามารถเป็น v2.0, v3.0, v3.5 หรือ v4.0 บันทึกไฟล์ vcxproj และปิดคลิกขวาที่โครงการที่ไม่ได้โหลดในโซลูชัน Explorer และคลิกตัวอย่างโครงการที่โหลดซ้ำ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

หมายเหตุ: ขั้นตอนเหล่านี้ใช้สำหรับ Visual Studio 2010 เท่านั้นเนื่องจากจะใช้รูปแบบใหม่ของไฟล์โครงการ C ++

แหล่งที่มาบน MSDN: วิธีการ: เปลี่ยน Framework .NET เป้าหมาย


5

โดยผู้ใช้ที่ไม่ระบุชื่อ:

(การแก้ไขเมื่อฉันเป็นผู้ใช้ใหม่และไม่สามารถตอบสนองต่อสิ่งนี้ได้ใครก็ตามที่เห็นว่ารู้สึกอิสระที่จะส่งสิ่งต่อไปนี้) การเปลี่ยนชุดเครื่องมือเป็น v100 ทำให้ VS2010 เป็นเป้าหมายจริง NET 4.0 แม้ว่ามันจะยังคงปรากฏเป็นเป้าหมาย 3.5 คุณสมบัติของโครงการ VS2010 ควรคายคำเตือนเกี่ยวกับเรื่องนี้จริงๆเพราะในขณะนี้จะปรากฏขึ้นตามที่คุณสามารถกำหนดเป้าหมาย. NET 3.5 ด้วยชุดเครื่องมือ v100 ซึ่งคุณไม่สามารถทำได้


เนื่องจากการกำหนดเป้าหมายหลายเป้าหมายจะช่วยให้คุณสามารถกำหนดเป้าหมายเป็น V2.0, 3.0, 3.5 และ 4.0 เท่านั้น รุ่น. x 1.x ไม่สามารถกำหนดเป้าหมายได้ด้วยวิธีนี้
Jeroen Landheer

0

ใน VS 2010 หากติดตั้งชุดเครื่องมือให้ไปที่คุณสมบัติโครงการ -> กำหนดค่าคุณสมบัติ -> ทั่วไปและเปลี่ยนแพลตฟอร์มชุดเครื่องมือจาก v90 เป็น v100

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.