发布后从项目中提取文件

问题描述 投票:0回答:1

我有一个.NET 7版本的.NET控制台应用程序项目,并且我已经发布了这个项目,导致只有一个.exe文件用于运行该项目。我向该项目添加了一个 .xml 文件,并希望在运行 .exe 文件时将该 .xml 文件复制到另一个目录。请注意,我最后只有一个 .exe 文件,并且该文件旁边没有其他类或文件,因此我无法使用像

AppDomain.CurrentDomain.BaseDirectory
这样的命令。

我想通过向主项目添加一些代码来将此功能添加到应用程序中,因为发布项目后,我无法直接访问其他项目中类的文件和完整代码。该项目仅包含一个程序类和一个 XML 文件。

.net console-application extract publish
1个回答
0
投票

要在运行 .NET 控制台应用程序的 .exe 文件时将 XML 文件复制到另一个目录,可以使用

Assembly.GetExecutingAssembly().Location
属性在运行时获取 .exe 文件的路径。以下是如何实现此目标的示例:

  1. 将 XML 文件添加到您的 .NET 控制台应用程序项目中。确保其“复制到输出目录”属性设置为“如果较新则复制”或“始终复制”,以便在发布项目时将其包含在内。

  2. 在您的

    Program.cs
    文件中,添加以下代码以将 XML 文件复制到所需目录:

using System;
using System.IO;
using System.Reflection;

namespace YourNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            string exeDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string xmlFilePath = Path.Combine(exeDirectory, "YourXmlFile.xml");
            string destinationDirectory = "C:\\Your\\Destination\\Directory"; // Replace with your desired destination directory
    
            string destinationFilePath = Path.Combine(destinationDirectory, "YourXmlFile.xml");
            File.Copy(xmlFilePath, destinationFilePath, true);
    
            Console.WriteLine("XML file copied successfully.");
            Console.ReadLine();
        }
    }
}

上面的代码中,

Assembly.GetExecutingAssembly().Location
用于获取运行时.exe文件的路径。然后,使用
Path.Combine
构造 XML 文件和目标目录的路径。最后,
File.Copy
用于将XML文件复制到目标目录。

确保将

"YourXmlFile.xml"
替换为 XML 文件的实际名称,将
"C:\\Your\\Destination\\Directory"
替换为所需目标目录的路径。

当您运行发布的.exe文件时,它会将XML文件复制到指定目录。

© www.soinside.com 2019 - 2024. All rights reserved.