Kuidas avaldada eraldi failina ilma ühekordselt käivitatavasse faili kaasamata

Lehekülg uuendatud :
Lehe loomise kuupäev :

Keskkond

3 tärniga
  • Visual Studio 2019
ASP.NET tuum
  • 3.1

Mis on üks fail?

Lisaks exe faili, siis sageli vaja faili nagu dll käivitada programmi. Levitate mitut faili ja programmi.

Nüüd saate käivitada kõik failid ühes exe, avaldades programmi funktsiooni "Loo üks fail" lisatud .NET Core 3.0. (PDB-fail on silumisteabe fail, nii et te ei pea seda levitama.)

Kuid mõnel juhul võite paigutada konfiguratsioonifaili kausta exe asemel lisada see exe. Selles jaotises kirjeldatakse, kuidas seda teha.

Ühe faili väljundi ks valmistumine

Proovina tuleks kasutada järgmist projekti konfiguratsiooni textfile1.txt faili laadimiseks käivitamisel. TextFile1.txt on mõeldud levitamiseks exe faili, nii et muuta see "Build Action: None" ja "Kopeeri Väljund kataloog: Kopeeri uus, kui uus." TekstiFile1.txt sisu võib olla meelevaldne.

Saate luua programmi eeldusega, et soovite laadida faile, mis on jaotatud koos.

Siiski ühe faili täitmisfaili tegelikult laiendatakse eraldi ajutine kaust, kui see käivitatakse. Kui laadite faili suhtelises teel, peate selle määrama kaustas, kus käivitatava faili käivitasite, mitte kaustas, kus täitmisfail asub.

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

Silumisel näete, et fail on laaditud.

TextFile1.txt prinditakse ka väljund kausta, sest see ei ole veel kompileeritud ühte faili.

Avaldame selle selles olekus ühe failina. Protseduur jäetakse välja, kuna avaldamine pole mõeldud.

Sihtkäitusaeg peab olema mitteteisaldatav, et olla üks fail.

Ma pole veel midagi paika pannud, nii et see on üks fail nagu tavaliselt.

Ei ole TextFile1.txt käivitamisel, nii et saad veateate.

Kuidas avaldada konkreetset faili ilma seda ühte faili lisamata

Avage projektifail (csproj) koodis failiga, mida te ei soovi projekti kaasata.

Ma arvan, et see on xml niimoodi: Otsige faili, mille sätteid soovite muuta. Sõltuvalt projekti sätetest ei pruugi teil sihtfaili olla, seega peate selle võib-olla käsitsi lisama.

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

Kui leiate faili, lisage ExcludeFromSingleFile true, järgmiselt: Nagu nimigi viitab, jäetakse see ühest failist välja.

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

Proovige publitseerida, kui olete salvestanud. Näete, et see on avaldatud ühest failist.

Avaldatud faili saate siiski käivitada, et kontrollida, kas see töötab õigesti.