Folder/Directory 在部署目标上创建

Folder/Directory Creation on Deployment Targets

我正在使用 Octopus Deploy 将一个小脚本部署到目标 PC,但该脚本没有在目标机器上生成新文件夹。我的代码有问题还是部署设置有问题?

using System;
using System.IO;

class FolderCreation
{
    public static void Main()
    {
        string _basePath = @"c:\OD_Test";
        try
        {
            string dateFolder = DateTime.Now.ToString("yyyy-MM-dd");
            string path = $"{_basePath}\{dateFolder}";

            System.IO.Directory.CreateDirectory(path);
        }
        catch (Exception ex)
        {
             Console.WriteLine("The process failed: {0}", ex.ToString());
        }
    }
}

首先,代码中可能存在很多问题。 理想情况下,当您post时,请post异常的详细信息。

我怀疑两件事: - 您的父目录不存在,这就是您创建目录失败的原因。 - 代码没有在现有路径中创建目录的权限。

你可以通过catch 块中get 的异常类型知道这一点。 Directory.CreateDirectory 在不成功的情况下抛出以下异常:

  • IOException - path指定的目录是一个文件。

  • UnauthorizedAccessException - 调用者没有所需的权限。

  • ArgumentException - 路径是零长度字符串,仅包含白色 space,或包含一个或多个无效字符。您可以使用 GetInvalidPathChars() 方法查询无效字符。 OR 路径前缀为或仅包含冒号字符 (:)。

  • ArgumentNullException - 路径为空。

  • PathTooLongException - 指定的路径、文件名或两者都超过了系统定义的最大长度。

  • DirectoryNotFoundException - 指定的路径无效(例如,它位于未映射的驱动器上)。

  • NotSupportedException - 路径包含不属于驱动器标签 ("C:\") 的冒号字符 (:)。

注意:CreateDirectory 抛出的异常详情取自 documentation at MSDN.

Octopus Deploy 只允许接受脚本文件。我不是 应该创建一个 class 本身但只包含信息 在主要方法里面。可以使用OD的脚本添加功能 模块。