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




.net (8)

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

  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)

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

https://code.i-harness.com


  1. Application.StartupPath এবং 7. System.IO.Path.GetDirectoryName(Application.ExecutablePath) - উইন্ডোজ ফর্ম অ্যাপ্লিকেশনের জন্য শুধুমাত্র কাজ করতে যাচ্ছে

  2. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location)

    আপনাকে কিছু দেওয়ার জন্য যাচ্ছে: "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Temporary ASP.NET Files\\legal-services\\e84f415e\\96c98009\\assembly\\dl3\\42aaba80\\bcf9fd83_4b63d101" যেখানে আপনি যে পৃষ্ঠাটি চালাচ্ছেন তা হল।

  3. AppDomain.CurrentDomain.BaseDirectory ওয়েব অ্যাপ্লিকেশনের জন্য দরকারী হতে পারে এবং "C:\\hg\\Services\\Services\\Services.Website\\" যা বেস ডিরেক্টরি এবং এটি বেশ উপযোগী।

  4. System.IO.Directory.GetCurrentDirectory() এবং 5. Environment.CurrentDirectory

ভিসুয়াল স্টুডিও থেকে ডিবাগ মোডে চলমান ওয়েব অ্যাপ্লিকেশনটি যেমন "C:\\Program Files (x86)\\IIS Express" মতো কিছু জায়গা থেকে আপনাকে "C:\\Program Files (x86)\\IIS Express"

  1. System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

কোডটি চালানোর জন্য কোডটি যেখানে .dll সেখানে আপনাকে "file:\\C:\\hg\\Services\\Services\\Services.Website\\bin"

উদাহরণস্বরূপ উদাহরণস্বরূপ কনসোল অ্যাপ্লিকেশন পয়েন্ট 2-6 ডিরেক্টরি থাকবে যেখানে .exe ফাইলটি রয়েছে।

এই আপনি কিছু সময় সংরক্ষণ করে আশা করি।


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

string rootPath = Path.GetPathRoot(Application.StartupPath)

আমি ব্যবহারকারীর কাছ থেকে সেশনতে 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.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)

এটা linqpad. ভিতরে এমনকি কাজ করে linqpad.


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

Application.StartupPath

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

System.IO.Directory.GetCurrentDirectory()

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


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


রুট ডিরেক্টরি:

DriveInfo cDrive = new DriveInfo(System.Environment.CurrentDirectory);
var driverPath = cDrive.RootDirectory;

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

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

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

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

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





.net