So veröffentlichen Sie als separate Datei, ohne in einer Datei mit nur einer Ausführung enthalten zu sein

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Umgebung

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3.1

Was ist eine einzelne Datei?

Zusätzlich zur exe-Datei benötigen Sie oft eine Datei wie eine DLL, um ein Programm auszuführen. Sie verteilen mehrere Dateien und Programme.

Sie können nun alle Dateien in einem Exe ausführen ausführen, indem Sie das Programm mit der Funktion "Einzelne Datei erstellen" veröffentlichen, die von .NET Core 3.0 hinzugefügt wurde. (Die pdb-Datei ist eine Debug-Informationsdatei, sodass Sie sie nicht verteilen müssen.)

In einigen Fällen können Sie jedoch eine Konfigurationsdatei in einem Ordner mit exe platzieren, anstatt sie in die Exe einzuschließen. In diesem Abschnitt wird beschrieben, wie Sie dies tun.

Vorbereiten der Ausgabe mit nur Dateien

Als Beispiel sollte die folgende Projektkonfiguration verwendet werden, um die Datei TextFile1.txt beim Start zu laden. TextFile1.txt soll mit der exe-Datei verteilt werden, also machen Sie es "Build Action: None" und "Copy to Output Directory: Copy to New If New". Der Inhalt von TextFile1.txt kann beliebig sein.

Sie können ein Programm mit der Annahme erstellen, dass Sie Dateien laden möchten, die zusammen verteilt sind.

Die ausführbare Datei in einer einzelnen Datei wird jedoch bei der Ausführung tatsächlich in einen separaten temporären Ordner erweitert. Wenn Sie eine Datei in einen relativen Pfad laden, müssen Sie sie in dem Ordner angeben, in dem Sie die ausführbare Datei gestartet haben, und nicht in dem Ordner, in dem sich die ausführbare Datei befindet.

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();
    }
  }
}

Beim Debuggen sehen Sie, dass die Datei geladen ist.

TextFile1.txt wird auch im Ausgabeordner gedruckt, da es noch nicht in eine einzige Datei kompiliert wurde.

Lassen Sie uns es als eine einzelne Datei in diesem Zustand veröffentlichen. Das Verfahren wird weggelassen, da die Publikation nicht beabsichtigt ist.

Die Ziellaufzeit muss nicht portierbar sein, um eine einzelne Datei zu sein.

Ich habe noch nichts festgelegt, also ist es eine Datei wie üblich.

Es gibt keine TextFile1.txt, wenn Sie es ausführen, so dass Sie eine Fehlermeldung erhalten.

So veröffentlichen Sie eine bestimmte Datei, ohne sie in eine einzelne Datei einzuschließen

Öffnen Sie die Projektdatei (csproj) im Code mit der Datei, die Sie nicht in das Projekt aufnehmen möchten.

Ich denke, es ist xml wie folgt: Suchen Sie nach der Datei, für die Sie die Einstellungen ändern möchten. Abhängig von den Projekteinstellungen verfügen Sie möglicherweise nicht über eine Zieldatei, sodass Sie sie möglicherweise manuell hinzufügen müssen.

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

Wenn Sie die Datei finden, fügen Sie ExcludeFromSingleFile mit true wie folgt hinzu: Wie der Name schon sagt, wird es aus einer einzelnen Datei ausgeschlossen.

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

Bitte versuchen Sie, zu veröffentlichen, sobald Sie gespeichert haben. Sie können sehen, dass es aus einer einzelnen Datei veröffentlicht wird.

Sie können die veröffentlichte Datei weiterhin ausführen, um sicherzustellen, dass sie ordnungsgemäß funktioniert.