コード例 #1
0
        /// <summary>
        ///		Copia un directorio o crea una referencia
        /// </summary>
        private void Copy(ProjectModel projectSource, ProjectModel projectTarget, string fileSource, string pathTarget, bool isRecursive)
        {
            if (Directory.Exists(fileSource))
            {
                string [] files = Directory.GetFiles(fileSource);

                // Copia los archivos
                foreach (string fileName in files)
                {
                    Copy(projectSource, projectTarget, fileName, pathTarget, isRecursive);
                }
                // Copia los directorios
                if (isRecursive)
                {
                    // Obtiene los directorios
                    files = Directory.GetDirectories(fileSource);
                    // Copia los archivos
                    foreach (string fileName in files)
                    {
                        Copy(projectSource, projectTarget, fileName, Path.Combine(pathTarget, Path.GetFileName(fileName)), isRecursive);
                    }
                }
            }
            else if (File.Exists(fileSource))
            {
                string fileTarget = Path.Combine(pathTarget, Path.GetFileName(fileSource));

                if (!File.Exists(fileTarget))
                {
                    ReferenceModel reference;

                    // Cambia la extensión al archivo final de referencia
                    fileTarget = fileTarget + new Model.Solutions.FileModel(null).GetExtension(FileModel.DocumentType.Reference);
                    // Crea el objeto de referencia
                    reference                   = new ReferenceModel(new Solutions.FileFactory().GetInstance(projectTarget, fileTarget));
                    reference.ProjectName       = projectSource.Name;
                    reference.FileNameReference = HelperFiles.GetFileNameRelative(projectSource.File.Path, fileSource);
                    // Crea el directorio
                    HelperFiles.MakePath(pathTarget);
                    // Crea el archivo de referencia
                    new ReferenceRepository().Save(reference);
                }
            }
        }