چگونه به عنوان یک فایل جداگانه منتشر شود بدون اینکه در یک فایل تک اجرا گنجانده شود

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط

ویژوال استودیو
  • ویژوال استودیو ۲۰۱۹
ASP.NET هسته
  • ۳/۱

یک فایل واحد چیست ؟

علاوه بر فایل exe ، شما اغلب نیاز به یک فایل مانند یک dll برای اجرای یک برنامه است. شما چندین فایل و برنامه را توزیع می کنید.

شما هم اکنون می توانید تمام فایل ها را در یک exe اجرا کنید با انتشار برنامه با استفاده از ویژگی "ایجاد فایل تک" اضافه شده از .NET Core ۳/۰. (فایل 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>

لطفا سعی کنید به انتشار یک بار شما را نجات داد. شما می توانید ببینید که آن را از یک فایل واحد منتشر شده است.

شما هنوز می توانید فایل منتشر شده را اجرا کنید تا تأیید شود که به درستی کار می کند.