Visual Studio - กำหนดมาโครเส้นทางที่กำหนดเองได้ที่ไหน


92

ฉันเพิ่งเปิดโครงการ Visual Studio ของคนอื่นและในคุณสมบัติการสร้างของพวกเขาพวกเขามีมาโครเส้นทางที่กำหนดเองสองสามตัวที่พวกเขาใช้สำหรับไดเรกทอรี include และ lib ชื่อมาโครมีลักษณะดังนี้:

$(MY_WHATEVER_INCLUDE_DIR)

ฉันสามารถแทนที่ทุกมาโครด้วยเส้นทางจริงด้วยตนเองได้ แต่จะเป็นการดีที่จะใช้มาโคร คำถามของฉันคือฉันจะกำหนดมาโครเส้นทางที่กำหนดเองเหล่านี้ได้ที่ไหน


2
เหลวไหลฉันคาดว่ามันจะหาได้ง่ายจริงๆ หลังจากผ่านไป 10 นาทีฉันก็ยอมแพ้ . . +1 จากฉัน ดูเหมือนว่าจะมีการเปลี่ยนแปลงตั้งแต่ VS 6.0 วัน . . โอกาสใดที่ผู้ใช้ของคุณกำหนดสิ่งเหล่านี้โดยตรงในสภาพแวดล้อมของพวกเขา?
Frank Merrow

1
คำตอบของ gregseth มีวิธีแก้ปัญหาที่แท้จริง: มีส่วน User Macro อยู่ใต้ Common Properties เมื่อแก้ไขแผ่นคุณสมบัติ แต่เฉพาะในกรณีที่แผ่นงานนั้นเฉพาะสำหรับโซลูชัน / โครงการ ดังนั้นหากคุณกำลังแก้ไขแผ่นงานเริ่มต้นที่ใช้ร่วมกันในโครงการทั้งหมด User Macros จะไม่แสดง ดูความคิดเห็นของฉันเกี่ยวกับคำตอบของ gregseth ด้านล่าง
Cam Jackson

1
การใช้ไฟล์. props ใช้ใน Visual Studio 2010 สำหรับการกำหนด / เปลี่ยนมาโคร ก่อนหน้านั้นนามสกุลไฟล์คือ. vsprops
Aditya Kumar Pandey

1
ฉันได้เขียนรายละเอียดเพิ่มเติมเกี่ยวกับการใช้ shset คุณสมบัติที่นี่: stackoverflow.com/q/25810603/398670
Craig Ringer

คำตอบ:


48

ลิงก์นี้http://msdn.microsoft.com/en-us/library/a2zdt10t(v=vs.90).aspxอาจทำให้คุณสนใจ ฉันไม่ชอบแนวคิดที่จะเปลี่ยนการกำหนดค่าระบบทั้งหมดเพียงเพื่อสร้างโครงการ ส่วนที่น่าสนใจที่สุดในหน้านี้คือความคิดเห็นสุดท้าย:

หน้านี้ไม่ได้กล่าวถึงวิธีเข้าสู่กล่องโต้ตอบนี้:

จาก Property Manager ให้ดับเบิลคลิกที่หน้าคุณสมบัติ คลิกที่ "User Macros" ภายใต้ "Common Properties" ในตัวควบคุมโครงสร้าง


8
อืม .. ดูเหมือนจะไม่มีตัวเลือก "User Macros" ในส่วน "Common Properties" ฉันใช้ VS 2010 Pro
Jelle Vergeer

21
@Jelle ความคิดเห็นขนาดใหญ่จากลิงค์ด้านบนมีข้อมูลเพิ่มเติมที่คุณต้องการ! 'User Macros' จะแสดงภายใต้ 'คุณสมบัติทั่วไป' เท่านั้นหากแผ่นคุณสมบัติที่คุณกำลังแก้ไขนั้นเฉพาะสำหรับโปรเจ็กต์ / โซลูชัน! ดังนั้นสิ่งที่คุณต้องทำคือเปิดหน้าต่าง Property Manager ใน VS คลิกขวาที่โครงการของคุณและเพิ่มแผ่นคุณสมบัติใหม่ จากนั้นคลิกขวา -> คุณสมบัติบนแผ่นงานที่สร้างขึ้นใหม่และตอนนี้คุณจะเห็นตัวเลือก 'User Macros' ใต้ 'คุณสมบัติทั่วไป'! หวังว่าจะช่วยได้ :)
Cam Jackson

1
นี่เป็นตัวเลือกที่ซ่อนอยู่ นี่คือลิงก์ใหม่สำหรับหน้าการสนับสนุนMSVS ( msdn.microsoft.com/en-us/library/f2t8ztwy%28v=vs.90%29.aspx ) ซึ่งแทบจะไม่มีอะไรเลย ในหน้านี้ ( sites.google.com/site/pinyotae/Home/visual-studio-visual-c/… ) เป็นรายการขั้นตอนที่ละเอียดกว่าไม่สมบูรณ์แบบ แต่ให้คำแนะนำบางอย่างแก่คุณ
Javier Mr

1
เพิ่มข้อมูลเพิ่มเติมและตัวอย่างที่นี่: stackoverflow.com/q/25810603/398670 สิ่งสำคัญอย่างหนึ่งที่ต้องเข้าใจคือสามารถแนบแผ่นคุณสมบัติทั้งหมดบางส่วนหรือเพียงคำสั่งผสมการกำหนดค่า / แพลตฟอร์มเดียว ซึ่งแตกต่างจากตัวแก้ไขคุณสมบัติปกติไม่มีค่าที่แตกต่างกันสำหรับการกำหนดค่า / แพลตฟอร์มที่แตกต่างกัน ถ้าคุณต้องการคุณใช้แผ่นงานที่แตกต่างกันสำหรับแต่ละแผ่น ค่อนข้างยืดหยุ่นเมื่อคุณหาวิธีรวมแผ่นงานหลายแผ่นและมีหนึ่งอ้างถึงมาโครในอีกแผ่นหนึ่ง
Craig Ringer

ในส่วนที่เกี่ยวกับ Visual Studio 2019 และความคิดเห็นของ Doug Kimzey คุณสามารถเพิ่มได้ใน VS 2019 มาโครผู้ใช้สามารถเพิ่มและแก้ไขได้ตามขั้นตอนที่ระบุโดยการตอบกลับของ Serge Rogatch ฉันต้องใช้เวลาสักหน่อยเพื่อค้นหามัน :)
Hamp

39

วิธีการอธิบายพร้อมรูปภาพ: https://sites.google.com/site/pinyotae/Home/visual-studio-visual-c/create-user-defined-environment-variables-macros

ใน Visual Studio คุณต้อง:

  1. คลิกในเมนูหลัก "View" จากนั้นคลิก "Property Manager"
  2. คลิกขวาในพื้นที่ว่างของหน้าต่าง "Property Manager" และในเมนูป๊อปอัปคลิก "Add New Project Property Sheet"
  3. หลังจากเพิ่มแผ่นคุณสมบัติแล้วให้ดับเบิลคลิกในหน้าต่าง Property Manager และในแผนภูมิทางด้านซ้ายเลือกหน้าคุณสมบัติ "User Macros"
  4. จากนั้นคุณสามารถคลิกปุ่ม "เพิ่มมาโคร"

บทแนะนำเกี่ยวกับ Project Property Sheets: http://www.dorodnic.com/blog/2014/03/20/visual-studio-macros/


6
คำตอบนี้ต้องการการโหวตเพิ่มขึ้น โปรดเลือกคำตอบนี้เป็นที่ยอมรับ คำตอบที่ยอมรับในปัจจุบันไม่ได้ตอบคำถามด้วยซ้ำ
Mike S

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


7

แผ่นคุณสมบัติมีแนวโน้มที่จะเป็นทางออกที่เหมาะสม; คำตอบนี้อธิบายอย่างละเอียดเกี่ยวกับ @ gregseth แทนที่จะพยายามแทนที่เพราะมันยาวเกินไปสำหรับความคิดเห็น

ฉันพบว่าฉันต้องการเส้นทางที่แตกต่างกันสำหรับเป้าหมาย 32 บิตและ 64 บิตและการทำเช่นนั้นต้องใช้เวลาพอสมควรดังนั้นฉันจึงได้บันทึกกระบวนการโดยละเอียด

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

คุณสามารถเพิ่มแผ่นคุณสมบัติให้กับคอมโบคอนฟิกูเรชัน / แพล็ตฟอร์มเดียวกับคอมโบทั้งหมดหรือเพียงบางส่วน

หากคุณต้องการให้มีการตั้งค่าส่วนกลางการกำหนดค่า / แพลตฟอร์มจะแทนที่คุณสามารถทำได้โดยตรวจสอบให้แน่ใจว่าแผ่นคุณสมบัติที่เฉพาะเจาะจงมากขึ้นเป็นครั้งสุดท้าย ดังนั้นคุณอาจมีแผ่นคุณสมบัติ "การกำหนดค่าทั้งหมด" แล้วหนึ่งแผ่นสำหรับ "x86" หนึ่งแผ่นสำหรับ "x64" หนึ่งแผ่นสำหรับ "การแก้ปัญหา" และอีกแผ่นหนึ่งสำหรับ "การเปิดตัว" เป้าหมายการดีบัก x64 จะมีแผ่นงาน "all", "x86", "debug" โดยทั่วไปจะเลียนแบบสิ่งที่ตัวแก้ไขคุณสมบัติของ VS ทำภายใน


3

Re: อืม .. ดูเหมือนจะไม่มีตัวเลือก "User Macros" ใน "Common Properties" ฉันใช้ VS 2010 Pro

ตัวเลือก User Macros จะไม่ปรากฏขึ้นหากคุณเปิดกล่องโต้ตอบคุณสมบัติสำหรับไฟล์ proj เหมือนที่คุณทำในมุมมองไฟล์ปกติ คุณต้องเปลี่ยนไปใช้มุมมอง Propery ขยายโครงการบางส่วนและเลือกหน้าคุณสมบัติ (* .props) ที่คุณเพิ่มตามวัตถุประสงค์ มาโครผู้ใช้จะปรากฏขึ้นที่นั่น

หรือคุณสามารถแก้ไข XML ได้โดยตรง มาโครทำงานได้ดีหากกำหนดไว้ในไฟล์. * proj แต่การทำให้เป็น "User Macro" นั้นไม่มีจุดหมายหากไม่มีหน้าแก้ไข ดังนั้นแค่ทำให้เป็นคุณสมบัติธรรมดาใน <PropertyGroup>

ดังที่ได้กล่าวไว้ก่อนหน้านี้ยังดึงตัวแปรสภาพแวดล้อม อย่างไรก็ตามคุณต้องแน่ใจว่าได้ตั้งค่าไว้ในบริบทที่ Devenv จะเห็นพวกเขา! ทำในเชลล์คำสั่งจากนั้นเรียกใช้ DEVENV จากพรอมต์คำสั่งเดียวกัน เมื่อฉันมีสถานการณ์เช่นนั้นฉันสร้างไฟล์แบตช์เพื่อตั้งค่าตัวแปรที่เหมาะสมและเปิด DEVENV และวางไอคอนไฟล์ค้างคาวนั้นบนเดสก์ท็อป


1
"มุมมองคุณสมบัติ" อาจเป็น "ตัวจัดการคุณสมบัติ" ในเวอร์ชัน VS ของคุณซึ่งเข้าถึงได้จาก View -> Windows อื่น ๆ
Craig Ringer

1
ฉันเดาว่ามันจะกลายเป็นมุมมองเมื่อเชื่อมต่อเป็นแท็บพร้อมกับมุมมองไฟล์คลาสและทรีทรัพยากร
JDługosz

2

ลองวิธีอื่นโดยไม่ต้องเพิ่มความยุ่งยากในแผ่นคุณสมบัติแต่ละแผ่น

ไปที่ Windows OS System Properties > Environment Variablesเพียง New และป้อนVariableเช่น MY_PATH และค่าเช่น: D: \ Dev_Path \

หลังจากนั้นคุณต้องรีสตาร์ท Visual Studio คุณควรจะมี $ {MY_PATH} ในรายการมาโคร

p / s: เพียงแค่สังเกตว่าJason Williamsตอบข้างบนคือวิธี OS Environment Variables


ไม่ใช่ความคิดที่ดีหากคุณต้องการให้ทรัพย์สินของคุณเป็นของโครงการของคุณเท่านั้น
Mia Shani

คุณใช้แอปพลิเคชันใดในการตั้งค่าคุณสมบัติเหล่านี้
Doug Kimzey

1

คำตอบเดียวกับ @Serge Rogatch ยกเว้นว่าฉันไม่พบ "Property Manager" ใน View

ขั้นตอนภาพสำหรับการนำทางอย่างรวดเร็ว: ป้อนคำอธิบายภาพที่นี่


0

วิธีสำหรับ Visual Studio เวอร์ชันล่าสุด (2015+) มีดังนี้:

ในการสร้างมาโครที่ผู้ใช้กำหนดเอง:

  1. ในหน้าต่าง Property Manager (บนแถบเมนูเลือก View, Property Manager) เปิดเมนูทางลัดสำหรับแผ่นคุณสมบัติ (ชื่อลงท้ายด้วย. user) จากนั้นเลือก Properties
  2. กล่องโต้ตอบหน้าคุณสมบัติสำหรับแผ่นคุณสมบัตินั้นจะเปิดขึ้น ในบานหน้าต่างด้านซ้ายของกล่องโต้ตอบให้เลือกแมโครผู้ใช้ ในบานหน้าต่างด้านขวาให้เลือกปุ่มเพิ่มมาโครเพื่อเปิดกล่องโต้ตอบเพิ่มผู้ใช้มาโคร
  3. ในกล่องโต้ตอบระบุชื่อและค่าสำหรับแมโคร เลือกกล่องกาเครื่องหมายตั้งค่าแมโครนี้เป็นตัวแปรสภาพแวดล้อมในสภาพแวดล้อมการสร้าง

ที่มา


ไม่มีสิ่งใดที่เรียกว่า "Property Manager" ในเมนู View ของ Visual Studio 2019 ไม่มีรายการที่เรียกว่า "User Macros" ในหน้า Property ของ Visual Studio 2019 การค้นหาวิธีใช้คือ Visual Studio 2019 สำหรับ "User Macros" เปิดตัว " กล่องโต้ตอบรายการใหม่ "
Doug Kimzey

VS2019 - ดู -> Windows อื่น ๆ -> Property Manager (แล้วคุณจะมาถูกทาง!)
Kirk Bates
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.