สร้างการกำหนดค่า: แพลตฟอร์มผสม VS CPU ใด ๆ


คำตอบ:


42

นี่คือลิงค์ที่ช่วยอธิบายการตั้งค่าคอนฟิกบิลด์ที่พบใน Visual Studio และไฟล์บิลด์:

http://web.archive.org/web/20151215192101/http://visualstudiohacks.com/articles/visual-studio-net-platform-target-explained/

โดยทั่วไปการตั้งค่าจะระบุว่าแอสเซมบลีสามารถทำงานบนแพลตฟอร์มใดได้ เมื่อเลือก AnyCPU DLL ผลลัพธ์จะถูกทำเครื่องหมายว่าสามารถทำงานได้ทุกที่ เมื่อเลือก x86 ผลลัพธ์ DLL จะถูกทำเครื่องหมายว่าสามารถทำงานบนระบบ 32 บิตเท่านั้นและจะไม่ทำงานในแอปพลิเคชันหรือกระบวนการ 64 บิต (แต่จะทำงานใน Windows 64 บิต) และอื่น ๆ ไปเรื่อย ๆ

นี่เป็นเพียงการตั้งค่าสถานะบน DLL ที่คอมไพล์แล้ว - มันไม่ได้เปลี่ยนแง่มุมอื่น ๆ ของกระบวนการคอมไพล์เลย


1
นอกจากนี้โปรดดูลิงก์นี้เกี่ยวกับการโต้ตอบไฟล์โซลูชัน: social.msdn.microsoft.com/forums/vstudio/en-US/…
J. Polfer

49
สิ่งนี้ดูเหมือนจะไม่ได้อธิบายถึง "แพลตฟอร์มแบบผสม"
คุกคาม

2
@Menace ความเข้าใจของฉัน (จากข้อมูลอ้างอิงที่สูญหาย) คือเมื่อคุณเปิดโซลูชันที่โปรเจ็กต์ทั้งหมดไม่มีคอนฟิกูเรชันเดียวกัน Visual Studio จะแสดง / เลือกคอนฟิกูเรชันโซลูชันเป็นแพลตฟอร์มแบบผสม (ถ้าฉันสามารถหาข้อมูลอ้างอิงเดิมได้ฉันจะแก้ไขด้วยการอ้างอิง)
koan911

8
ลิงค์visualstudiohacks.com/articles/…ตายแล้ว
.

40

ตามที่แพลตฟอร์มอื่นได้อธิบายไปแล้ว (เช่น X86 สำหรับ 32 บิต x64 สำหรับ 64 บิตเท่านั้นและ 'CPU ใด ๆ ' สามารถทำงานได้ทั้งสองอย่าง) ฉันจะมุ่งเน้นMixed Platformว่าสิ่งนี้แตกต่างจากAny CPUอย่างไร

ค่าAny CPUนี้อยู่ที่การตั้งค่าระดับโปรเจ็กต์โดยที่โซลูชันในโลกแห่งความเป็นจริงเรามีโปรเจ็กต์จำนวนมากภายใต้โซลูชันเดียวและมีโอกาสที่โปรเจ็กต์บางโปรเจ็กต์ของฉันใช้Any CPUแต่โปรเจ็กต์อื่น ๆ ใช้x86หรือx64สร้างแพลตฟอร์ม

ดังนั้นที่ระดับโซลูชันMixed Platformจะถูกเลือกโดยอัตโนมัติ สิ่งนี้บ่งชี้ว่าในระหว่างการสร้าง / สร้างโซลูชันแต่ละโครงการสร้างตามแพลตฟอร์มที่เลือก


17

ชื่อการกำหนดค่าการสร้างไม่ได้มีความหมายมากนัก แต่จะเพิ่มจำนวนขึ้นเรื่อย ๆ หากคุณมีโปรเจ็กต์ C ++ และ C # ในโซลูชันเดียวกัน (และแย่กว่านั้นถ้าคุณมีโปรเจ็กต์มือถือด้วย) เนื่องจากโปรเจ็กต์ประเภทต่างๆใช้ชื่อการกำหนดค่าที่แตกต่างกันดังนั้นคุณจึงจบ ด้วยจำนวนมาก

เราพยายามลบการกำหนดค่าทั้งหมดที่เราไม่ได้ใช้งานอยู่เรื่อย ๆ แต่บางครั้งก็เป็นงานหนักบ่อยครั้งเมื่อคุณเพิ่มโครงการใหม่การกำหนดค่าที่ไม่ต้องการจะถูกเพิ่มกลับเข้าไปในโซลูชัน

คำแนะนำของฉันคือการตัดสินใจเกี่ยวกับการกำหนดค่าที่คุณต้องการ (โดยดูที่การตั้งค่าจริงภายใน) จากนั้นจึงลบทุกอย่างออก


10

From: กระทู้นี้. https://social.msdn.microsoft.com/forums/vstudio/en-US/81c72e8b-6335-4bf4-b7c0-b5c322edcaee/mixed-platforms-vs-any-cpu

เมื่อโปรเจ็กต์ทั้งหมดในโซลูชันเป็นประเภทเดียวกัน (เช่นโปรเจ็กต์ C # / VB) คอนฟิกูเรชันโซลูชันจะตรงกับคอนฟิกูเรชันโปรเจ็กต์ทุกประการ เมื่อคุณมีโปรเจ็กต์ในโซลูชันที่มีคอนฟิกูเรชัน / แพลตฟอร์มที่ไม่ตรงกัน Visual Studio จะสร้างคอนฟิกูเรชันระดับโซลูชัน "แพลตฟอร์มผสม / ดีบัก" และอาจเป็น "แพลตฟอร์มผสม / รีลีส" การกำหนดค่าเหล่านี้เป็นเพียงการแมปกับการกำหนดค่าระดับโครงการแต่ละรายการ

ตัวอย่างเช่นถ้าคุณมีโปรเจ็กต์ C # และโปรเจ็กต์ C ++ โดยทั่วไป "แพลตฟอร์มผสม / ดีบัก" จะแมปกับ "CPU / ดีบักใด ๆ " สำหรับโปรเจ็กต์ C # และ "Win32 / Debug" สำหรับโปรเจ็กต์ C ++

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