ฉันสร้างแอปพลิเคชั่นคอนโซลอย่างง่ายด้วยรหัสต่อไปนี้:
Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory);
Console.WriteLine(System.Environment.CurrentDirectory);
Console.WriteLine(System.IO.Directory.GetCurrentDirectory());
Console.WriteLine(Environment.CurrentDirectory);
ฉันคัดลอกไฟล์ที่เรียกทำงานได้ที่เป็นไปC:\temp2
ได้ จากนั้นฉันก็วางทางลัดไปยังไฟล์ที่เรียกใช้C:\temp3
งานได้แล้วรันมัน (หนึ่งครั้งจาก exe เองและอีกครั้งจากทางลัด) มันให้ผลลัพธ์ต่อไปนี้ทั้งสองครั้ง:
C:\temp2
C:\temp2\
C:\temp2
C:\temp2
C:\temp2
ในขณะที่ฉันแน่ใจว่าต้องมีเหตุผลบางอย่างที่จะอธิบายว่าทำไมมีวิธีการที่แตกต่างกันห้าวิธีที่ทำสิ่งเดียวกันอย่างแท้จริงฉันไม่ทราบว่ามันคืออะไร อย่างไรก็ตามมันจะปรากฏว่าภายใต้สถานการณ์ส่วนใหญ่คุณมีอิสระที่จะเลือกสิ่งที่คุณต้องการ
UPDATE:
ผมปรับเปลี่ยนคุณสมบัติทางลัดเปลี่ยน "Start ใน:" C:\temp3
เพื่อ สิ่งนี้ส่งผลให้เกิดผลลัพธ์ต่อไปนี้:
C:\temp2
C:\temp2\
C:\temp3
C:\temp3
C:\temp3
... ซึ่งแสดงให้เห็นอย่างน้อยก็มีความแตกต่างระหว่างวิธีการต่าง ๆ