繁体   English   中英

C# 文件夹创建不是创建所有文件夹,而是仅在某些机器上

[英]C# Folder creation not creating all folders, but only on some machines

我正在编写一个自定义的工作应用程序。 该应用程序将为我们的客户项目创建一个文件夹结构。 我正在创建程序的机器在从代码窗口调试时和构建调试编译二进制文件后都可以工作。 创建文件夹没问题。 另一台测试机器,一台旧的win7机器,工作正常,没有问题。

我将二进制应用程序文件交给我的同事为我测试,它在尝试创建文件夹的下一部分时引发错误。 (最后出错)

他安装了 .Net 4.8(它在 4.7.2 上运行)。 我已经检查并打开了注册表中的 LongFolderPath 标志,但它在我的主电脑上没有激活(而不是在 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 台机器上崩溃并出现上述错误,在某个时间点后似乎无法创建文件夹。

有任何想法吗?

该路径是在我们进行时创建的。它是“\\L2500 GSM \\”部分末尾的空格。 我将 .Trim() 添加到路径构建的每个组件中修复了它。

归功于 panoskarajohn

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM