Я хочу создать консольное приложение. Net, которое запускается планировщиком задач Windows. В этом консольном приложении я хочу найти путь к каталогу, в котором находится файл .exe приложения.
Я публикую sh приложение для создания файла .exe, запустив эту строку кода в командной строке: dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true
Я считаю, что это может иметь какое-то отношение к странному поведению, описанному ниже.
Проблема, с которой я сталкиваюсь, заключается в том, что при запуске. EXE-файл путь, который он получает, не путь к папке, в которой он находится.
Чтобы продемонстрировать это, я написал это консольное приложение:
//program.cs
using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
namespace PathTest
{
class Program
{
static void Main(string[] args)
{
Write(Directory.GetCurrentDirectory());
Write(Assembly.GetExecutingAssembly().Location);
Write(Assembly.GetExecutingAssembly().CodeBase);
Write(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
Write(AppDomain.CurrentDomain.BaseDirectory);
Write(Environment.GetCommandLineArgs()[0]);
Write(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase));
Write(Process.GetCurrentProcess().MainModule.FileName);
Write(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
Console.ReadKey();
}
readonly static Action<string> Write = (str) =>
{
Console.WriteLine(str);
Console.WriteLine("");
};
}
}
Когда я отлаживаю эту программу, я получаю эти выходные данные: отладочный образ
Когда я запускаю файл .exe, я получаю следующие выходные данные: ручной запуск
Когда я использую Windows Task Планировщик для запуска файла .exe Я получаю следующие выходные данные: образ планировщика задач
Что я хотел бы знать: Какой код я должен использовать, чтобы получить путь к каталогу где находится файл .exe?
Почему путь к файлу папка mp возвращается?