Как динамически быть либо консольным приложением, либо приложением Windows
Мое приложение создано таким образом, что оно не использует какие-либо пакеты графического интерфейса WPF при запуске в консоли. Я сделал это с помощью интерфейса, поэтому, когда я устанавливаю текстовое поле или пишу в консоль, это делается следующим образом
Код: Выделить всё
public interface IUserOutput
{
abstract void DisplayOutput(string msg);
}
class ConsoleOutput : IUserOutput
{
public void DisplayOutput(string msg)
{
Console.WriteLine(msg);
}
}
public class TextBoxOutput : IUserOutput
{
public void DisplayOutput(string msg)
{
if (TestWPF.App.Current != null)
{
TestWPF.App.Current.Dispatcher.BeginInvoke(new Action(() =>
{
((MainWindow)TestWPF.App.Current.MainWindow).TextBox.Text += msg + "\r\n";
}));
}
}
}
Если я попытаюсь запустить его как консольное приложение в Linux, я получу сообщение ошибка, что отсутствует «Microsoft.WindowsDesktop.App», версия 8.0.0 (x64)
Я знаю, что невозможно запустить WPF с графическим интерфейсом в Linux, но это как-то возможно для запуска приложения WPF, работающего как консольное приложение в Linux.
Я попытался загрузить пакет nuget для «Microsoft.WindowsDesktop.App» и поместить папку ref в /usr/dotnet/ shared/Microsoft.WindowsDesktop.App/8.0.6/ и /usr/dotnet/shared/Microsoft.WindowsDesktop.App/8.0.0/, но у меня выдает ту же ошибку, как-то можно заставить Linux думать, что это установлен, чтобы он все равно запускал его?
Или есть способ собрать проект так, чтобы Linux не видел, что ему требуется «Microsoft.WindowsDesktop.App»?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/786 ... applicatio