سؤال

وأنا أقرأ ملف XML وتريد أن تجعل من من دليل النسبي على أساس الموقع من التطبيق، على غرار ASP.NET مع Server.MapPath أو باستخدام تيلدا.

وكيف يمكنك الحصول على مسار نسبي في برنامج الأغذية العالمي؟

WORKS: XDocument xmlDoc = XDocument.Load(@"c:\testdata\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~\Data\customers.xml");
DOES NOT WORK: XDocument xmlDoc = XDocument.Load(@"~/Data/customers.xml");
هل كانت مفيدة؟

المحلول

XDocument xmlDoc = XDocument.Load(@"Data\customers.xml");

وOR

XDocument xmlDoc = XDocument.Load(@".\Data\customers.xml");

وراجع للشغل، وهذا لا علاقة له مع برنامج الأغذية العالمي أن تفعل مع مسارات ويندوز شيء وكل شيء.

نصائح أخرى

XDocument xmlDoc = XDocument.Load(
    Path.Combine(
        AppDomain.CurrentDomain.BaseDirectory, 
        @"Data\customers.xml"));

وأفترض الدليل Data سوف تحصل على نشرها مع التطبيق الخاص بك، في الدليل الجذر نفس EXE الخاص بك. هذا هو آمن بشكل عام، إلا إذا نسخ الظل المعنية؛ على سبيل المثال، عند استخدام NUnit لاختبار هذا الرمز. (مع نسخ الظل، والمجالس التي تشكل التطبيق الخاص بك الحصول على نسخ إلى دليل مؤقت، ولكن مثل هذه الملفات الحصول على تركوها وراءهم.)

وعلى افتراض انك لا تخطط لتعديل customers.xml بعد النشر، وأسلم طريقة للتعامل مع ذلك هي لتضمين ملف كمورد في التجميع الخاص بك.

وحاول File.Create("./HiImHere.txt") لنرى أين هو الدليل نقطة. بعد ذلك حاول مسار قريب إلى حيث HiImHere.txt هو.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top