/// <summary>
        /// 将一个文件夹移动到特定版本的包文件夹中,然后让当前版本联接到此文件夹中。
        /// </summary>
        /// <param name="sourceDirectory">要移动的文件夹。</param>
        /// <param name="version">移动文件夹需要移动到此版本号对应的包文件夹中。</param>
        public void MoveAsCurrent(DirectoryInfo sourceDirectory, string version)
        {
            var targetDirectory  = GetVersionDirectory(version, false);
            var currentDirectory = GetVersionDirectory(CurrentDirectoryName, false);

            PackageDirectory.Move(sourceDirectory, targetDirectory, DirectoryOverwriteStrategy.Overwrite);
            PackageDirectory.Link(currentDirectory, targetDirectory);
        }
示例#2
0
        /// <summary>
        /// 将一个文件夹移动到特定版本的包文件夹中,然后让当前版本联接到此文件夹中。
        /// </summary>
        /// <param name="sourceDirectory">要移动的文件夹。</param>
        /// <param name="version">移动文件夹需要移动到此版本号对应的包文件夹中。</param>
        public void MoveAsCurrent(DirectoryInfo sourceDirectory, string version)
        {
            var targetDirectory  = GetVersionDirectory(version, false);
            var currentDirectory = GetVersionDirectory(CurrentDirectoryName, false);

            PackageDirectory.Move(sourceDirectory, targetDirectory);
            PackageDirectory.LinkOrMirror(currentDirectory, targetDirectory);
        }
        /// <summary>
        /// 获取特定版本的目录信息。
        /// </summary>
        /// <param name="version">版本号。</param>
        /// <param name="ensureExists">如果此方法要求目录必须存在,则传入 true;否则传入 false。</param>
        /// <returns>一个表示此目录的目录信息对象。</returns>
        private DirectoryInfo GetVersionDirectory(string version, bool ensureExists)
        {
            var directory = Path.Combine(_rootDirectory.FullName, version);

            if (ensureExists)
            {
                PackageDirectory.Create(directory);
            }
            return(new DirectoryInfo(directory));
        }
 /// <summary>
 /// 尝试删除其他版本的文件夹,如果文件夹被占用,则忽略。
 /// 此操作会导致当前版本联接到此版本的文件夹中。
 /// </summary>
 /// <param name="version">要保留的版本号。</param>
 public void DeleteOthers(string version)
 {
     foreach (var directory in _rootDirectory.EnumerateDirectories("*", SearchOption.TopDirectoryOnly))
     {
         if (directory.Name != version && CurrentDirectoryName.Equals(directory.Name, StringComparison.OrdinalIgnoreCase))
         {
             PackageDirectory.Delete(directory);
         }
     }
 }
        /// <summary>
        /// 将一个文件夹移动到特定版本的包文件夹中。
        /// </summary>
        /// <param name="sourceDirectory">要移动的文件夹。</param>
        /// <param name="version">移动文件夹需要移动到此版本号对应的包文件夹中。</param>
        public void Move(DirectoryInfo sourceDirectory, string version)
        {
            var targetDirectory = GetVersionDirectory(version, false);

            PackageDirectory.Move(sourceDirectory, targetDirectory, DirectoryOverwriteStrategy.Overwrite);
        }
 /// <summary>
 /// 删除所有版本的包文件夹,然后删除此包文件夹自身。
 /// </summary>
 public void DeleteAll() => PackageDirectory.Delete(_rootDirectory);
        /// <summary>
        /// 删除特定版本的包文件夹。
        /// 如果当前版本就是正准备删除的版本(已建立目录联接),则也会同时删除当前版本(断开目录联接)。
        /// 如果当前版本只是某个版本的副本(通常是因为管理分区在 NTFS 分区),则不会收到影响。
        /// </summary>
        /// <param name="version">要删除的版本号。</param>
        public void Delete(string version)
        {
            var directory = GetVersionDirectory(version, false);

            PackageDirectory.Delete(directory);
        }
示例#8
0
        /// <summary>
        /// 将一个文件夹复制到特定版本的包文件夹中。
        /// </summary>
        /// <param name="sourceDirectory">要复制的文件夹。</param>
        /// <param name="version">复制文件夹需要复制到此版本号对应的包文件夹中。</param>
        public void Copy(DirectoryInfo sourceDirectory, string version)
        {
            var targetDirectory = GetVersionDirectory(version, false);

            PackageDirectory.Copy(sourceDirectory, targetDirectory);
        }