كيفية نشر كملف منفصل دون أن يتم تضمينها في ملف تشغيل واحد

تحديث الصفحة :
تاريخ إنشاء الصفحة :

البيئه

استوديو مرئي
  • ستوديو مرئي 2019
ASP.NET الأساسية
  • 3.1

ما هو الملف الواحد؟

بالإضافة إلى ملف exe، ستحتاج غالباً إلى ملف مثل dll لتشغيل برنامج. ستقوم بتوزيع ملفات وبرامج متعددة.

يمكنك الآن تشغيل كافة الملفات في exe واحد عن طريق نشر البرنامج باستخدام ميزة "إنشاء ملف واحد" إضافة من .NET الأساسية 3.0. (ملف pdb هو ملف معلومات التصحيح، لذلك لا تحتاج إلى توزيعه.)

ومع ذلك، في بعض الحالات، قد تحتاج إلى وضع ملف تكوين في مجلد مع exe بدلاً من تضمينه في exe. يصف هذا القسم كيفية القيام بذلك.

التحضير لإخراج ملف واحد

كـ نموذج، يجب استخدام تكوين المشروع التالي لتحميل الملف TextFile1.txt عند بدء التشغيل. TextFile1.txt مخصص لتوزيعها مع ملف exe، لذا جعله "بناء الإجراء: بلا" و "نسخ إلى دليل الإخراج: نسخ إلى جديد إذا جديد." يمكن أن تكون محتويات TextFile1.txt إجبارية.

يمكنك إنشاء برنامج مع افتراض أنك تريد تحميل الملفات التي يتم توزيعها معاً.

ومع ذلك، يتم توسيع الملف التنفيذي في ملف واحد فعلياً إلى مجلد مؤقت منفصل عند تشغيله. عند تحميل ملف في مسار نسبي، يجب تحديده في المجلد الذي قمت بتشغيل الملف القابل للتنفيذ، وليس في المجلد الذي يوجد فيه الملف القابل للتنفيذ.

using System;
using System.Diagnostics;
using System.IO;

namespace ExcludeFromSingleFile
{
  class Program
  {
    static void Main(string[] args)
    {
      using var processModule = Process.GetCurrentProcess().MainModule;
      Console.WriteLine(File.ReadAllText(Path.Combine(Path.GetDirectoryName(processModule.FileName), "TextFile1.txt")));
      Console.ReadKey();
    }
  }
}

عند التصحيح، يمكنك مشاهدة تحميل الملف.

كما تتم طباعة TextFile1.txt في مجلد الإخراج لأنه لم يتم بعد ترجمة إلى ملف واحد.

دعونا نشرها كملف واحد في هذه الحالة. تم حذف الإجراء لأن المنشور غير مخصص.

يجب أن يكون وقت التشغيل الهدف غير محمول ليكون ملف واحد.

لم أقم بأي شيء بعد، لذا فهو ملف واحد كالمعتاد.

لا يوجد TextFile1.txt عند تشغيله، لذلك سوف تحصل على خطأ.

كيفية نشر ملف معين دون تضمينه في ملف واحد

افتح ملف المشروع (csproj) في التعليمات البرمجية مع الملف الذي لا تريد تضمينه في المشروع.

أعتقد أنه من xml مثل هذا: ابحث عن الملف الذي تريد تغيير الإعدادات له. اعتماداً على إعدادات المشروع، قد لا يكون لديك ملف هدف، لذلك قد تحتاج إلى إضافته يدوياً.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="TextFile1.txt">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

عند العثور على الملف إضافة ExcludeFromSingleFile مع true، كما يلي: كما يوحي الاسم، يتم استبعاده من ملف واحد.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="TextFile1.txt">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <!-- ここから追加 -->
      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
      <!-- ここまで追加 -->
    </None>
  </ItemGroup>
</Project>

الرجاء محاولة نشر بمجرد حفظ. يمكنك مشاهدة أنه يتم نشرها من ملف واحد.

لا يزال بإمكانك تشغيل الملف المنشور للتحقق من أنه يعمل بشكل صحيح.