c# - অ্যাপ্লিকেশন ফোল্ডার পথ পেতে শ্রেষ্ঠ উপায়




6 Answers

AppDomain.CurrentDomain.BaseDirectory সম্ভবত ফাইল অ্যাক্সেসের জন্য সবচেয়ে দরকারী যা এর অবস্থানটি অ্যাপ্লিকেশন ইনস্টল ডিরেক্টরি সম্পর্কিত।

একটি ASP.NET অ্যাপ্লিকেশনটিতে, এটি অ্যাপ্লিকেশন রুট ডিরেক্টরি হবে, বিন সাবফোলার নয় - এটি সম্ভবত যা আপনি চান। একটি ক্লায়েন্ট অ্যাপ্লিকেশন, এটি প্রধান এক্সিকিউটেবল ধারণকারী ডিরেক্টরি হতে হবে।

একটি VSTO 2005 অ্যাপ্লিকেশনটিতে, এটি আপনার অ্যাপ্লিকেশনের জন্য VSTO পরিচালিত সমাহারগুলি ধারণকারী ডিরেক্টরি হবে, না বলে, এক্সেল এক্সিকিউটেবলের পথ।

অন্যরা আপনার পরিবেশের উপর নির্ভর করে বিভিন্ন ডিরেক্টরিগুলি ফেরত পাঠাতে পারে - উদাহরণস্বরূপ @ ভিমভক 1 9 87 এর উত্তরটি দেখুন।

CodeBase এমন একটি জায়গা যেখানে একটি ফাইল পাওয়া যায় এবং http: // এর সাথে শুরু হওয়া একটি URL হতে পারে। কোন ক্ষেত্রে Location সম্ভবত সমাবেশ ডাউনলোড ক্যাশে হবে। CodeBase GAC মধ্যে সমাহারগুলির জন্য সেট করা নিশ্চিত করা হয় না।

আমি অ্যাপ্লিকেশন ফোল্ডার পাথ পেতে কিছু উপায় আছে দেখতে যে:

  1. Application.StartupPath
  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)
  3. AppDomain.CurrentDomain.BaseDirectory
  4. System.IO.Directory.GetCurrentDirectory()
  5. Environment.CurrentDirectory
  6. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
  7. System.IO.Path.GetDirectory(Application.ExecutablePath)

পরিস্থিতির উপর নির্ভর করে সেরা উপায় কি?




উল্লেখ্য যে এই সমস্ত পদ্ধতি একই মান প্রদান করবে না। কিছু ক্ষেত্রে, তারা একই মূল্য ফেরত দিতে পারে, তবে সতর্ক থাকুন, তাদের উদ্দেশ্যগুলি ভিন্ন:

Application.StartupPath

StartupPath পরামিতি প্রদান করে (অ্যাপ্লিকেশন চালানোর সময় সেট করা যেতে পারে)

System.IO.Directory.GetCurrentDirectory()

বর্তমান ডিরেক্টরিটি ফেরত দেয়, যা অ্যাপ্লিকেশনটি অবস্থিত যেখানে ফোল্ডার হতে পারে বা নাও হতে পারে। একই Environment.CurrentDirectory জন্য যায়। যদি আপনি এটি একটি DLL ফাইলে ব্যবহার করছেন, এটি প্রক্রিয়া চলমান হওয়ার পথটি ফেরত দেবে (এটি বিশেষ করে ASP.NET এ সত্য)।




আমি ব্যবহারকারীর কাছ থেকে সেশনতে Win32 API এ উইন্ডোজ পরিষেবা থেকে একটি প্রক্রিয়া শুরু করেছি যা আসলে লগ ইন (কার্য পরিচালক সেশন 1 নং 0)। এই আমরা জানতে পারেন, যা পরিবর্তনশীল সেরা।

উপরের প্রশ্ন থেকে সকল 7 টি ক্ষেত্রে, ফলাফলগুলি নিম্নরূপ:

Path1: C:\Program Files (x86)\MyProgram
Path2: C:\Program Files (x86)\MyProgram
Path3: C:\Program Files (x86)\MyProgram\
Path4: C:\Windows\system32
Path5: C:\Windows\system32
Path6: file:\C:\Program Files (x86)\MyProgram
Path7: C:\Program Files (x86)\MyProgram

সম্ভবত এটি আপনার পক্ষে সহায়ক, যখন আপনি আপনার ক্ষেত্রে সেরা পরিবর্তনশীল অনুসন্ধান করেন।




এই একটি "System.IO.Path.GetDirectory (অ্যাপ্লিকেশন। এক্সটেনশেবলপথ)" সিস্টেমের পরিবর্তিত হয়েছে। আইপি.পথ। গেট ডাইরেক্টরিনাম (অ্যাপ্লিকেশন। এক্সটেনশেবলপ্যাথ)




আপনি রুট ডিরেক্টরি পেতে জানেন যদি:

string rootPath = Path.GetPathRoot(Application.StartupPath)



উদাহরণ স্বরূপ :

  1. বোতাম: [নাম - ' btn_OpenFile ']
  2. আমার 'abc.exe' আছে যা আমি খুলতে চাই।
  3. ফাইল পথ: C:\Users\Admin\Documents\Visual Studio 2015\Projects\MyProject\MyProject\abc.exe.

সুতরাং, আমি অনুসরণ করবো:

  1. বোতাম ক্লিক ইভেন্টে: btn_OpenFile_Click()

Process.Start(@Environment.CurrentDirectory+"\\..\\..\\abc.exe");

নোট: "পরিবেশ। "C:\\Users\\Admin\\Documents\\Visual Studio 2015\\Projects\\MyProject\\MyProject\\bin\\Debug" এই পথটি ফেরত দেয়: "C:\\Users\\Admin\\Documents\\Visual Studio 2015\\Projects\\MyProject\\MyProject\\bin\\Debug"

সুতরাং, "\\.." Putting "\\.." এই দ্বারা, আপনি উচ্চ ডিরেক্টরি যেতে পারেন।




Related


Tags

c#   .net