Битриксоид до мозга и костейи такой вопрос?! .. кхм..
хранить информацию о файлах в базе данныхэто фичи ФС по тому и ответ простой - если вам требуются возможности, которые ФС не способна предоставить* - это нормально. в противном случае - такое решение избыточно, и может быть лишним источником ошибок
И еще вопрос: как реализовано то, что в приложении блога человек может добавлять новости и они отображаются у всех скачавших?в том то и дело что без бекэнда ни как. обычно это функционал блога на веб сайте. не совсем понятно почему вы хотите именно приложение. но если на то пошло, переформулируйте цель - уберите слово блог, замените его на клиент-серверное приложение. тогда сразу станет проще подбирать необходимые технологии. можно рассмотреть примеры реалтайм чатов, их в сети не так уж и мало. в частности на основе SignalR
Я хочу запустить одновременно Windows 10 и Ubuntu Server.не получатся ваши хотелки - у линуксовых серверов нет гуи и любоваться на виндовый сервер вам будет не где (даже если он тоже консольный). что бы работать локально на компе в гуях, нужно что бы головная система имела гуи сразу. так что ставьте десктопную юбунту сразу, а в ней виртуалбокс upd или любой другой гипервизор по вкусу
На Ubuntu Server будет крутиться веб-сервер.
А на Windows 10 я буду работать время от времени.
Что делать?
Что по поводу проброса видеокарты?если хост с гуями - не требуется
MessageId выше, то описания не видно, проблема может быть там. попробуйте не объявляйте переменную заранее, а получить ее прямо во время вызова. вот такSetChatPhoto(out var MessageId, File) 
mainкак описать две функции, которые принимают и возвращают подобные tuple?там точно решена
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace experience_with_tuples
{
class Program
{
static void Main(string[] args)
{
var t = (1, "test", true);
ConOut_tuple(job_with_tuple(t));
// хотя можно и так. но не забываем про скобки
ConOut_tuple(job_with_tuple((1, "test", true)));
}
static (int, string, bool) job_with_tuple((int, string, bool) t)
{
(var i, var s, var b) = t;
i++;
s += " successful";
b = !b;
return (i, s, b);
}
static void ConOut_tuple((int, string, bool) t) =>
Console.WriteLine(
t.Item1 + Environment.NewLine +
t.Item2 + Environment.NewLine +
$"detected errors: {t.Item3}"
);
}
}
public (int, int) MovePoint(int x, int y)
{
// bla-bla-bla
// изменения x, y
return (x, y);
}
...
(var newX, var newY) = MovePoint(oldX, oldY);(ну или с какой-нибудь программной прослойкой)гипервизор называется. а ОС будут гостевыми в виртуальных машинах. других вариантов нет. от слова вообще нет