C# Создание папок не создает все папки, но только на некоторых машинах - PullRequest
0 голосов
/ 12 февраля 2020

Я пишу пользовательское приложение для работы. Приложение создаст структуру папок для наших клиентских проектов. Машина, на которой я создаю программу, работает как в режиме отладки из окна кода, так и после сборки двоичного файла отладочной компиляции. Создает папки без проблем. Еще одна тестовая машина, старая машина win7, работает нормально, никаких проблем.

Я передаю двоичный файл приложения моему коллеге, чтобы проверить его, он выдает ошибку при попытке создать следующий раздел папок. (ошибка в конце)

У него установлено. Net 4.8 (работает на 4.7.2). Я проверил и включил флаг LongFolderPath в реестре, но он не был активен на моем основном p c (и не на машине win7). Я установил VS на его машине, чтобы мы могли пройти по коду и обнаружил ошибки в приведенном ниже коде (примечание).

вот полный код для добавления структуры папок: https://pastebin.com/E26UFeuz

Вот фрагмент соответствующих разделов, которые не работают на этом компьютере.

siteTypeName = "NSB";
projectPath = "C:\\Test\\";

private void createDirectoryStructure(string siteNumber, string siteName, string siteProject)
{
...
    string[] siteProjectFolderTemplate = {   
                                         "100 - Existing Data",
                                         "200 - Site Walk Info",
                                         "300 - Drawings",
                                         "400 - Engineering",
                                         "500 - Photo Sims",
                                         "600 - Surveys",
                                         "700 - RFDS",
                                        "1000 - File Reveiw",
                                        "2000 - Leasing",
                                        "3000 - Zoning",
                                        "4000 - Permitting",
                                        "5000 - Subcontractor Services",
                                        "6000 - NTP",
                                        "7000 - SAQ File Closeout Docs",
                                        "8000 - Submittal Documents and QCs",
                                        "9000 - SCIP"
    };

...
//This is the section that breaks.
    for (int j = 0; j < siteProjectFolderTemplate.Length; j++)
    {
        System.IO.Directory.CreateDirectory(projectPath +
                                            cboClient.Text + "\\" +
                                            cboMarket.Text + "\\" +
                                            siteTypeName + "\\" +
                                            siteNumber + "_" + siteName + "\\" + siteProject + 
                                            "\\" + siteProjectFolderTemplate[j]
                                            );
    }
...
}

сообщение об ошибке гласит следующее:

************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Test\Client\Market\NSB\KSMO-P-041370_A\L2500 GSM \100 - Existing Data'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
   at System.IO.Directory.InternalCreateDirectoryHelper(String path, Boolean checkHost)
   at System.IO.Directory.CreateDirectory(String path)
   at AE_CreateFolderStructures.frm_CreateDirectoryStructure.createDirectoryStructure(String siteNumber, String siteName, String siteProject) in C:\Code Projects\AE-CreateFolderStructures\AE-CreateFolderStructures\frm_CreateDirectoryStructure.cs:line 547
   at AE_CreateFolderStructures.frm_CreateDirectoryStructure.btnImportCSV_Click(Object sender, EventArgs e) in C:\Code Projects\AE-CreateFolderStructures\AE-CreateFolderStructures\frm_CreateDirectoryStructure.cs:line 917
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

, чтобы напомнить ... из 3 машин, вылетает на 1 с вышеуказанной ошибкой, кажется, не может создать папки после определенного момента .

Есть идеи?

1 Ответ

0 голосов
/ 12 февраля 2020

путь создается, как мы go .. это был пробел в конце части \ L2500 GSM. Я исправил это с помощью .Trim (), добавленной к каждому компоненту построения пути.

Кредит переходит к panoskarajohn

...