Πώς να δημοσιεύσετε ως ξεχωριστό αρχείο χωρίς να συμπεριληφθείτε σε ένα αρχείο μίας εκτέλεσης

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον

Οπτικό στούντιο
  • Visual Studio 2019
πυρήνας ASP.NET
  • 3.1

Τι είναι ένα αρχείο;

Εκτός από το αρχείο exe, θα χρειαστείτε συχνά ένα αρχείο όπως ένα dll για να εκτελέσετε ένα πρόγραμμα. Θα διανείμετε πολλά αρχεία και προγράμματα.

Τώρα μπορείτε να εκτελέσετε όλα τα αρχεία σε ένα exe δημοσιεύοντας το πρόγραμμα χρησιμοποιώντας τη δυνατότητα "Δημιουργία ενιαίου αρχείου" που προστέθηκε από το .NET Core 3.0. (Το αρχείο pdb είναι ένα αρχείο πληροφοριών εντοπισμού σφαλμάτων, επομένως δεν χρειάζεται να το διανείμετε.)

Ωστόσο, σε ορισμένες περιπτώσεις, μπορεί να θέλετε να τοποθετήσετε ένα αρχείο ρύθμισης παραμέτρων σε ένα φάκελο με exe αντί να το συμπεριλάβετε στο exe. Αυτή η ενότητα περιγράφει τον τρόπο με τον οποίο μπορείτε να το κάνετε αυτό.

Προετοιμασία για έξοδο ενός αρχείου

Ως δείγμα, η ακόλουθη ρύθμιση παραμέτρων έργου θα πρέπει να χρησιμοποιηθεί για τη φόρτωση του αρχείου TextFile1.txt κατά την εκκίνηση. TextFile1.txt προορίζεται να διανεμηθεί με το αρχείο exe, έτσι ώστε να είναι "Build Action: Κανένα" και "Αντιγραφή στον κατάλογο εξόδου: Αντιγραφή σε νέο εάν νέο." Τα περιεχόμενα του αρχείου 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>

Προσπαθήστε να δημοσιεύσετε αφού αποθηκεύσετε. Μπορείτε να δείτε ότι δημοσιεύεται από ένα μόνο αρχείο.

Μπορείτε ακόμα να εκτελέσετε το δημοσιευμένο αρχείο για να βεβαιωθείτε ότι λειτουργεί σωστά.