Làm thế nào để xuất bản như là một tập tin riêng biệt, không được bao gồm trong các tập tin được xuất bản như là một tập tin thực thi

Trang Cập Nhật :
Ngày tạo trang :

Môi trường

Visual Studio-giường
  • Visual Studio 2019
ASP.NET lõi
  • 3,1

Một tập tin duy nhất là gì?

Ngoài các tập tin exe, bạn thường sẽ cần một tập tin như một dll để chạy một chương trình. Bạn sẽ phân phối nhiều tệp và chương trình.

Bây giờ bạn có thể chạy tất cả các tệp trong một exe bằng cách xuất bản chương trình bằng tính năng "tạo tệp đơn" được thêm từ .NET Core 3,0. (Tập tin pdb là một tệp thông tin gỡ lỗi, vì vậy bạn không cần phải phân phối nó.)

Tuy nhiên, trong một số trường hợp, bạn có thể muốn để một tập tin cấu hình trong một thư mục với exe thay vì bao gồm nó trong exe. Phần này mô tả cách thực hiện việc này.

Chuẩn bị cho đầu ra một tập tin

Như một mẫu, cấu hình dự án sau sẽ được sử dụng để tải tệp TextFile1. txt khi khởi động. TextFile1. txt được thiết kế để được phân phối với các tập tin exe, do đó, làm cho nó "xây dựng hành động: none" và "sao chép vào thư mục đầu ra: sao chép vào mới nếu mới." Nội dung của TextFile1. txt có thể được tùy ý.

Bạn có thể xây dựng một chương trình với giả định rằng bạn muốn tải các tập tin được phân phối với nhau.

Tuy nhiên, tệp thi hành trong một tập tin thực sự được mở rộng sang một thư mục tạm thời riêng biệt khi chạy. Khi bạn tải tệp trong đường dẫn tương đối, bạn phải chỉ định trong thư mục mà bạn bắt đầu tệp thi hành, không có trong thư mục nơi tệp thi hành được định vị.

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

Khi bạn gỡ lỗi, bạn có thể thấy rằng tệp được tải.

TextFile1. txt cũng được in trong thư mục đầu ra vì nó chưa được biên dịch thành một tập tin duy nhất.

Hãy xuất bản nó như là một tập tin duy nhất trong trạng thái này. Thủ tục được bỏ qua bởi vì các ấn phẩm không có ý định.

Thời gian chạy mục tiêu phải là không di động là một tập tin duy nhất.

Tôi đã không thiết lập bất cứ điều gì được nêu ra, vì vậy nó là một trong những tập tin như bình thường.

Không có TextFile1. txt khi bạn chạy nó, vì vậy bạn sẽ nhận được một lỗi.

Làm thế nào để xuất bản một tập tin cụ thể mà không bao gồm nó trong một tập tin duy nhất

Mở tệp dự án (csproj) trong mã với tệp mà bạn không muốn đưa vào dự án.

Tôi nghĩ rằng đó là XML như thế này: Tìm tệp mà bạn muốn thay đổi cài đặt. Tùy thuộc vào cài đặt dự án của bạn, bạn có thể không có tập tin đích, vì vậy bạn có thể cần phải thêm nó theo cách thủ công.

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

Khi bạn tìm thấy tệp, hãy thêm ExcludeFromSingleFile bằng đúng, như sau: Như tên ngụ ý, nó được loại trừ khỏi một tập tin duy nhất.

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

Hãy thử để xuất bản một khi bạn đã lưu. Bạn có thể thấy rằng nó được xuất bản ra khỏi một tập tin duy nhất.

Bạn vẫn có thể chạy tệp đã xuất bản để xác minh rằng nó hoạt động bình thường.