Я пишу пользовательское приложение для работы. Приложение создаст структуру папок для наших клиентских проектов. Машина, на которой я создаю программу, работает как в режиме отладки из окна кода, так и после сборки двоичного файла отладочной компиляции. Создает папки без проблем. Еще одна тестовая машина, старая машина 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 с вышеуказанной ошибкой, кажется, не может создать папки после определенного момента .
Есть идеи?