Julkaiseminen erillisenä tiedostona ilman kertakäyttöistä tiedostoa

Sivu päivitetty :
Sivun luontipäivämäärä :

Ympäristö

Visuaalinen studio
  • Visuaalinen studio 2019
ASP.NET ydin
  • 3.1

Mikä on yksittäinen tiedosto?

Exe-tiedoston lisäksi tarvitset usein tiedoston, kuten dll-tiedoston ohjelman suorittamiseen. Jaat useita tiedostoja ja ohjelmia.

Voit nyt suorittaa kaikki tiedostot yhdessä exe-ohjelmassa julkaisemalla ohjelman käyttämällä .NET Core 3.0:sta lisättyä "Luo yksittäinen tiedosto" -ominaisuutta. (PDB-tiedosto on virheenkorjaustiedosto, joten sinun ei tarvitse jakaa sitä.)

Joissakin tapauksissa haluat kuitenkin sijoittaa määritystiedoston kansioon, jossa on exe sen sijaan, että se lisättäisi sen exe-tiedostoon. Tässä osassa kuvataan, miten tämä tehdään.

Valmistellaan yhden tiedoston tulostusta

Esimerkkinä textFile1.txt-tiedoston lataamiseen käynnistyksen yhteydessä tulisi käyttää seuraavaa projektin määritystä. TextFile1.txt on tarkoitus jakaa exe-tiedoston kanssa, joten tee siitä "Build Action: None" ja "Kopioi tulostushakemistoon: Kopioi uuteen jos uusi." TextFile1.txt-tiedoston sisältö voi olla mielivaltainen.

Voit luoda ohjelman olettaen, että haluat ladata tiedostoja, jotka jaetaan yhdessä.

Yksittäisen tiedoston suoritettava tiedosto kuitenkin laajennetaan erilliseen väliaikaiseen kansioon, kun se suoritetaan. Kun lataat tiedoston suhteelliseen polkuun, se on määritettävä kansioon, jossa käynnistit suoritettavan tiedoston, ei kansioon, jossa suoritettava tiedosto sijaitsee.

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

Kun teet virheenkorjauksen, näet, että tiedosto on ladattu.

TextFile1.txt tulostetaan myös tulostuskansioon, koska sitä ei ole vielä käännetty yhdeksi tiedostoksi.

Julkaistaan se yhtenä tiedostona tässä tilassa. Menettely jätetään pois, koska julkaisua ei ole tarkoitettu.

Kohdeajoajan on oltava ei-kannettava, jotta se olisi yksittäinen tiedosto.

En ole asettanut vielä mitään, joten se on yksi tiedosto tavalliseen tapaan.

TextFile1.txt-tiedostoa ei ole, kun suoritat sen, joten saat virheilmoituksen.

Tietyn tiedoston julkaiseminen sisällyttämättä sitä yhteen tiedostoon

Avaa projektitiedosto (csproj) koodissa tiedostolla, jota et halua sisällyttää projektiin.

Mielestäni se on xml näin: Etsi tiedosto, jonka asetuksia haluat muuttaa. Projektin asetuksista riippuen sinulla ei ehkä ole kohdetiedostoa, joten se on ehkä lisättävä manuaalisesti.

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

Kun löydät tiedoston, lisää ExcludeFromSingleFile kanssa tosi, seuraavasti: Kuten nimestä voi päätellä, se jätetään pois yhdestä tiedostosta.

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

Yritä julkaista, kun olet tallentanut. Näet, että se on julkaistu yhdestä tiedostosta.

Voit silti tarkistaa julkaistun tiedoston suorittamalla sen oikein.