В Ubuntu я создал общий ресурс. В Windows я смонтировал этот общий ресурс на Y, используя:
mount -o nolock \\192.168.2.44/mnt/shared Y:
Далее я хочу использовать основное приложение dotnet для создания каталогов в этом общем ресурсе. Это приложение должно поддерживать любой символ, поддерживаемый общей папкой NFS.
static void Main(string[] args)
{
// works if Y: is NFS
Directory.CreateDirectory("Y:/subdir/:"); // works!
Directory.CreateDirectory("Y:/:"); // works!
// Directory.CreateDirectory("Y:/**"); // Does not work
// Directory.CreateDirectory("Y:/?"); // Does not work
try
{
Directory.CreateDirectory("C:/:"); // NTFS
} catch (Exception e)
{
Console.WriteLine("Not NFS"); // ntfs does not work (as expected)
}
}
Приведенный выше код работает как положено; если я хочу создать каталог ":" программа разрешает это на общей папке NFS, но не на диске NTFS.
Я ожидаю, что это будет вести себя одинаково для каталогов ** и?. Но если я закомментирую эти строки кода, я получу ошибку.
![enter image description here](https://i.stack.imgur.com/LT3yF.png)
Кто-нибудь знает, как я могу создавать специальные символьные словари в dotnet core 2.2?
Вещи, которые я уже пробовал
Я пытался использовать юникод вопросительного знака
Directory.CreateDirectory("Y:/\u003F");
Но это приводит к той же ошибке.
Этот вопрос НЕ совпадает с Какие символы запрещены в именах каталогов Windows и Linux? , потому что:
Приведенный выше вопрос спрашивает, какие запрещенные символы находятся в каталогах файлов Windows и Linux. Мой вопрос о том, как обойти эти ограничения Windows, когда вы хотите писать в каталог Linux из Windows.