Как я могу развернуть этот код C # как отдельный файл (эквивалентный .exe) на Mac? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть требование для небольшого приложения, которое пользователь будет загружать из Интернета и запускать на своем Mac. Цель этого - установить значение в xml-файле на их локальном компьютере. (Это для Parallels - в основном сценарий будет читать их серийный номер Mac и устанавливать его как серийный номер виртуальной машины в /users//Parallels/.pvm/config.pvs.)

Я достаточно опытен в программировании для Windows, но плохо знаком с программированием для Mac. Если бы я делал это в Windows, я бы написал небольшой C # EXE-файл, который пользователь мог бы загрузить и запустить.

Это код, который у меня есть:

string serialNumber;
using (var p = new Process())
{
    var serialRegex = new Regex("\"IOPlatformSerialNumber\" = \"(\\S+)\"");
    p.StartInfo = new ProcessStartInfo("/usr/sbin/ioreg",
                                       "-c IOPlatformExpertDevice");
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    serialNumber = serialRegex.Match(p.StandardOutput.ReadToEnd()).Groups[1].Captures[0].Value;
    p.WaitForExit();
}

Console.WriteLine("The following Virtual Machines were detected. Please enter the nunber of the Windows installation you plan to use as your Analysys Mason virtual machine.");

var profilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
var parallelsDir = Path.Combine(profilePath, "Parallels");

bool carryOn = false;

int i = 1;

string[] vms = Directory.GetDirectories(parallelsDir, "*.pvm").OrderByDescending(f => f).ToArray();

foreach (var vm in vms)
{
    Console.WriteLine(i + ". " + vm.Split('/').Last());
    i++;
}
int index = 0;

while (!carryOn) {
    Console.WriteLine("Enter the number of the Virtual Machine");
    var entry = Console.ReadLine();
    Console.WriteLine(Environment.NewLine);


    if (Int32.TryParse(entry, out index)) {
        if (index > 0 && index <= vms.Length){
            carryOn = true;
        } else {
            Console.WriteLine("Please enter a number of a virtual machine from the list above");
        }
    } else {
        Console.WriteLine("Please enter a valid number");
    }
}

Console.WriteLine("You selected: " + vms[index - 1]);

Это работает из Visual Studio, но я понятия не имею, как развернуть его как отдельный исполняемый файл.

Как мне упаковать его, чтобы я мог положить его куда-нибудь, чтобы пользователь мог загрузить и запустить его?

Я бы предпочел сделать приложение с графическим интерфейсом (похожее на приложение WinForms или XAML). Как я могу сделать это из Visual Studio / Xamarin?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...