/// <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); } } }