כיצד לפרסם כקובץ נפרד מבלי להיכלל בקובץ בהפעלה אחת

עודכן דף :
תאריך יצירת דף :

סביבה

ויז סטודיו
  • ויז סטודיו 2019
ASP.NET ליבה
  • 3.1

מהו קובץ בודד?

בנוסף לקובץ ה-exe, תזדקק לעתים קרובות לקובץ כגון dll כדי להפעיל תוכנית. באפשרותך להפיץ קבצים ותוכניות מרובים.

כעת באפשרותך להפעיל את כל הקבצים ב-exe אחד על-ידי פרסום התוכנית באמצעות התכונה "צור קובץ יחיד" שנוסף מ-.NET Core 3.0. (הקובץ pdb הוא קובץ מידע של איתור באגים, כך שאינך צריך להפיצה.)

עם זאת, במקרים מסוימים, ייתכן שתרצה למקם קובץ תצורה בתיקיה עם exe במקום לכלול אותו ב-exe. סעיף זה מתאר כיצד לבצע פעולה זו.

הכנה לפלט של קובץ יחיד

כדוגמה, יש להשתמש בתצורת הפרוייקט הבאה כדי לטעון את הקובץ TextFile1. txt באתחול. TextFile1. txt נועד להיות מופץ עם קובץ exe, כך לעשות את זה "לבנות פעולה: None" ו "העתק לספרייה פלט: העתק לחדש אם חדש." התוכן של 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>

כשתמצא את הקובץ, הוסף בלעדיות על הקובץ באופן מדויק, כדלקמן: כפי שרומז השם, הוא אינו נכלל בקובץ יחיד.

<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>

נא נסה לפרסם לאחר ששמרת. ניתן לראות שהוא מתפרסם מתוך קובץ יחיד.

באפשרותך עדיין להפעיל את הקובץ שפורסם כדי לוודא שהוא פועל כראוי.