Пути к файлам передаются программе в качестве аргументов!

Одно из заданий это то? что надо сделать, что пути к файлам передаются программе в качестве аргументов!

я знаю что оно делатеся вот так:

//string circleFilePath = args[0];
//string dotsFilePath  = args[1];

И когда мы запускаем проект должно быть что-то вроде такого:

dotnet run <path-to-input-file>
dotnet run <path-to-input-file> <path-to-input-file>

а у меня оно пока что делается вот так:
в самом Main:

string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";

string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";

И я не понимаю как сделать... То есть сам проект можно как-то скомпилировать и это уже будет отдельно файл. который запускается не с помощи Visual Studio, а с помощью командной строки? и если эти файлы которые надо подгрузить находятся в той же папке где и сам скомпилированный проектик то мы просто пишем... dotnet run <path-to-input-file>.

Я просто никогда еще ничего не "компилировал" и даже не знаю что это такое...

using System.Text.Json;

namespace Perfomance_Lab2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            

            try
            {
                string circleFileJson = File.ReadAllText(circleFilePath);
                Circle circle = JsonSerializer.Deserialize<Circle>(circleFileJson);

                string dotsFilePathJson = File.ReadAllText(dotsFilePath);
                Dictionary<string, Dot> dotsDictionary = JsonSerializer.Deserialize<Dictionary<string, Dot>>(dotsFilePathJson);
                List<Dot> dots = new List<Dot>(dotsDictionary.Values);

                foreach (var dot in dots)
                {
                    double distance = Calculate(circle, dot);
                    PrintResult(circle, distance);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error reading the data from json: \n{ex.Message}");
            }

        }

        static double Calculate(Circle circle, Dot dot)
        {
            double circleX = circle.Dot.X;
            double circleY = circle.Dot.Y;

            double dotX = dot.X;
            double dotY = dot.Y;

            return (double)Math.Sqrt(Math.Pow(dotX - circleX, 2) + Math.Pow(dotY - circleY, 2));

        }

        static void PrintResult(Circle circle, double distance)
        {
            if(distance < circle.Radius)
                Console.WriteLine("The dot is located indise of the circle");
            else if(distance > circle.Radius)
                Console.WriteLine("The dot is located outside of the circle");
            else
                Console.WriteLine("The dot is located on the radius of the circle");
        }
    }
}

Ответы (1 шт):

Автор решения: Console.WL

получилось у меня разобраться и сделать. а сам путь файлам надо указать в:

Projecttask4 PropertiesDebug GeneralOpen debug launch profile UIin Command Line Arguments

и туда вставляем ссылку на файлы.

введите сюда описание изображения

using System.Text.Json;

namespace task2
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // это для себя
            // string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";
            // string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";

            if (args.Length < 2)
            {
                Console.WriteLine("Usage: dotnet run <circleFilePath> <dotsFilePath>");
                return;
            }

            // путь к файлу закинул в Project - task4 Properties - Debug General - Open debug launch profile UI - in Command Line Arguments два пути там:
            // string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";
            // string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";

            string circleFilePath = args[0];
            string dotsFilePath = args[1];
            try
            {
                string circleFileJson = File.ReadAllText(circleFilePath);
                Circle circle = JsonSerializer.Deserialize<Circle>(circleFileJson);

                string dotsFilePathJson = File.ReadAllText(dotsFilePath);
                Dictionary<string, Dot> dotsDictionary = JsonSerializer.Deserialize<Dictionary<string, Dot>>(dotsFilePathJson);
                List<Dot> dots = new List<Dot>(dotsDictionary.Values);

                foreach (var dot in dots)
                {
                    double distance = Calculate(circle, dot);
                    PrintResult(circle, distance);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error reading the data from json: \n{ex.Message}");
            }

        }

        static double Calculate(Circle circle, Dot dot)
        {
            double circleX = circle.Dot.X;
            double circleY = circle.Dot.Y;

            double dotX = dot.X;
            double dotY = dot.Y;

            return (double)Math.Sqrt(Math.Pow(dotX - circleX, 2) + Math.Pow(dotY - circleY, 2));

        }

        static void PrintResult(Circle circle, double distance)
        {
            if (distance < circle.Radius)
                Console.WriteLine("The dot is located indise of the circle");
            else if (distance > circle.Radius)
                Console.WriteLine("The dot is located outside of the circle");
            else
                Console.WriteLine("The dot is located on the radius of the circle");
        }
    }
}
→ Ссылка