symbolic link create c# windows windows-8 windows-phone-8 symlink

c# - symbolic - windows create link to directory



Cómo utilizar enlaces suaves de reutilización creados en Mac en Windows 8 (3)

Tengo algunos softlinks, dice 1000 imágenes que he creado en MacBook Pro que estoy usando en mis aplicaciones de iOS.

Ahora estoy portando la misma aplicación en la aplicación de teléfono de Windows 8, así que quiero volver a usar el mismo Softlink en las aplicaciones de Windows Phone 8, así que ¿cómo puedo usar eso?

Intenté abrir el enlace suave en la máquina con Windows 8, pero dice que el "Formato de archivo no es compatible".

Tengo tanto el archivo original como el enlace suave en mi máquina con Windows.

¿Hay alguna otra forma en que pueda reutilizar el mismo enlace suave? si NO, cuál es el mejor enfoque que puedo seguir.

EDITAR

Ok, aquí hay más información sobre esto:

En MacBook Pro

Tengo una carpeta en el escritorio que tiene rutas físicas (imágenes reales), ahora he creado softlinks usando un script y estos softlinks se colocan en una carpeta diferente.

Ahora estoy usando estos enlaces en mi aplicación iOS.

En Windows 8

He copiado la carpeta que tiene el soflink así como también la carpeta que tiene archivos reales desde Mac.

Ahora pegué la carpeta de archivos actual en mi escritorio y la carpeta de enlaces en alguna unidad D: ahora si voy a la carpeta soflink en la unidad D y cuando reviso esas imágenes aparece en blanco, porque no apunta a los archivos reales.

Tengo ambas carpetas de archivos reales y también la carpeta de soflink.

Un punto más es que cuando creas un soflink, en MacBook Pro muestra este ícono:

Pero en Windows 8 está en blanco nada de eso.


Tal vez el problema es que hay tantos enlaces en un directorio

Hay un máximo de 31 puntos de reanálisis (y, por lo tanto, enlaces simbólicos) permitidos en una ruta particular.

Ver también


Su pregunta le falta un par de detalles, así que voy a tener que adivinar su situación. El problema es:

Creó algunos enlaces simbólicos usando OS X en un sistema de archivos y ahora tiene problemas para acceder a esos enlaces simbólicos en Windows.

A menos que haya hecho algo complicado, como instalar controladores de sistema de archivos de terceros, entonces el único sistema de archivos que tanto Windows como OS X pueden leer / escribir de forma nativa está basado en FAT. Entonces supongo que tu situación es:

Creó algunos enlaces simbólicos usando OS X en un sistema de archivos FAT32 y ahora tiene problemas para acceder a esos enlaces simbólicos en Windows.

Asumiendo la situación anterior, el problema es que no hay enlaces simbólicos en FAT32 porque el sistema de archivos no los admite. OS X te está engañando porque "simplemente funciona". Lo que realmente está sucediendo es que OS X está creando un archivo de texto ASCII que contiene la línea "XSym" junto con el nombre del archivo al que está "vinculando", más cierta información del sistema de archivos. Puede confirmar esto abriendo sus softlinks en su sistema Windows en el bloc de notas. Normalmente, verías código binario si abrieras una imagen real en el bloc de notas, pero en su lugar deberías ver el texto de estos enlaces simbólicos falsos.

¿Entonces, Qué haces? Veo un par de opciones:

  1. Puede usar un sistema de archivos que admita enlaces suaves. Esto podría significar el uso de HFS + (sistema de archivos OS X) que requeriría la instalación de controladores HFS + en su sistema Windows para que pueda leer / escribir en el sistema de archivos. O podría significar ir en otra dirección y usar NTFS (sistema de archivos de Windows) que requeriría la instalación de controladores NTFS en su Mac. Tenga en cuenta que las versiones más recientes de OS X pueden leer sistemas de archivos NTFS, simplemente no pueden escribir en ellos.

  2. Puede usar los enlaces simbólicos falsos que OS X está creando. Esto requeriría escribir un analizador para interpretar los enlaces o encontrar una biblioteca que lo haga por usted. No tengo una copia, pero creo que el formato XSym está cubierto en el libro "OS X Internals".

  3. Podría reconsiderar el enfoque de su problema para que no requiera el uso de enlaces simbólicos.

Si esto no resolvió su problema, proporcione más detalles porque tuve que hacer algunas conjeturas sobre su situación.

== EDITAR ==

Eche un vistazo a la documentación de subversión en enlaces simbólicos aquí . La cita relevante del documento es:

Versionado de enlaces simbólicos

En plataformas que no son de Windows, Subversion puede versionar archivos del enlace simbólico de tipo especial (o "enlace simbólico"). Un enlace simbólico es un archivo que actúa como una especie de referencia transparente a algún otro objeto en el sistema de archivos, lo que permite a los programas leer y escribir en esos objetos de forma indirecta mediante la realización de operaciones en el enlace simbólico mismo.

Cuando un enlace simbólico se envía a un repositorio de Subversion, Subversion recuerda que el archivo era de hecho un enlace simbólico, así como el objeto al cual el enlace simbólico "apunta". Cuando ese enlace simbólico está desprotegido en otra copia de trabajo en un sistema que no es de Windows , Subversion reconstruye un enlace simbólico de nivel real del sistema de archivos del enlace simbólico versionado. Pero eso de ninguna manera limita la usabilidad de las copias en funcionamiento en sistemas como Windows que no admiten enlaces simbólicos. En dichos sistemas, Subversion simplemente crea un archivo de texto regular cuyos contenidos son la ruta a la que apunta el enlace simbólico original. Si bien ese archivo no se puede utilizar como un enlace simbólico en un sistema Windows, tampoco impedirá que los usuarios de Windows realicen sus otras actividades relacionadas con Subversion.

Básicamente, dice algo similar a lo que mencioné anteriormente, que es que los enlaces simbólicos no son compatibles tan bien en absoluto en los sistemas Windows. Subversion solo crea archivos de texto con el contenido del enlace, por lo que puede optar entre averiguar cómo analizar estos archivos de texto usted mismo o tratar de encontrar una biblioteca que los analice por usted.


Sé que llego tarde en esto, pero espero que otros se beneficien de mi respuesta, aunque el autor de la pregunta puede haber pasado mucho tiempo.

Algunos antecedentes

La semántica del enlace simbólico difiere considerablemente entre los sistemas unixoid y Windows. Como se dijo anteriormente, Windows usa puntos de análisis para implementar enlaces simbólicos y puntos de unión (algunas funciones de deduplicación en las ediciones de Servidor también parecen usarlo).

Ahora, un punto de reanálisis contiene datos adicionales como una pista para el administrador de E / S y el administrador de objetos. Básicamente, en función de una etiqueta de punto de reanálisis (un GUID), se puede determinar el tipo de punto de reanálisis y luego un controlador de filtro del sistema de archivos maneja los detalles. Puede encontrar una descripción moderadamente detallada de esto en la 6ª edición de "Windows Internals" en el capítulo 9 o en un kit de controladores de Windows reciente o en MSDN bajo REPARSE_GUID_DATA_BUFFER (y temas relacionados).

En los sistemas unixoid, los metadatos del sistema de archivos también contienen una pista de que el (archivo de texto) es un enlace simbólico. Si usa ls -l esa pista es visible en forma de l , por ejemplo, en:

lrwxrwxrwx 1 user group 38 2015-10-12 11:51

Los contenidos reales de los enlaces simbólicos también son específicos del sistema, en Linux, por ejemplo, contienen simplemente la ruta de destino.

Lo que comparten los enlaces simbólicos de Windows y * nix es que el objetivo no necesita existir en el momento de la creación. También en Windows un enlace simbólico puede apuntar a una ubicación de red, que es especial porque en la red de Windows las rutas difieren de las rutas locales.

Posible compatibilidad

Suponiendo que se haya creado un enlace simbólico en el lado de OSX o Linux, podemos imaginar ciertos niveles de compatibilidad. Si el controlador del sistema de archivos del lado de Windows ahora presentara enlaces simbólicos como puntos de análisis y alguna parte (ya sea el controlador del sistema de archivos o un filtro del sistema de archivos) manejaría estos puntos de análisis, sería posible interpretar la ruta objetivo de un enlace simbólico en de alguna manera.

Sin embargo, la menor preocupación es convertir las barras diagonales hacia barras oblicuas hacia atrás.

En esta respuesta , ya describí algunos casos en los que no sería posible una traducción significativa.

Esencialmente, el único tipo de enlaces simbólicos para el que vería un potencial de compatibilidad son los enlaces simbólicos relativos . Pero incluso para aquellos es necesario señalar que la ruta de destino puede no apuntar fuera de la jerarquía de carpetas que está visible en el lado de Windows. Es decir, si su enlace simbólico en el lado OSX o Linux reside en /var/www/html y apunta a ../../../something algo, ../../../something tener sentido en un caso donde /var es el volumen montado en Windows.

Sin embargo, si symlink /var/www/html/foobar apuntan a ../html1/foo/bar probable que si /var era el volumen montado en OSX o Linux y ahora en Windows, la ruta de destino relativa sigue generando sentido (después de ajustes tales como barras diagonales hacia atrás, etc.).

Para cualquier ruta de destino absoluta, el controlador del sistema de archivos o el controlador del filtro del sistema de archivos debería obtener algunos consejos sobre cómo traducir la fuente de un enlace simbólico al formulario de destino.

Por ejemplo, si un enlace simbólico apuntaba a /home/foo/bar la parte /home podría traducirse a un volumen montado específico.

Pero ya se puede ver que esto requiere mucha intervención del usuario, que es probablemente la razón por la cual la mayoría de la gente consideraría inútil incluso intentar una traducción significativa.

Posible solución para SVN

Una posible solución para usted podría ser usar SVN externos. Depende del escenario exacto, pero ya que estás usando SVN me vienen a la mente.

Puedes pensar en SVN externos como los enlaces simbólicos nativos de Subversion. Los he usado de esta manera y sé de muchos otros que sí lo han hecho, pero no sé cuán extendido está ese tren de pensamiento y su uso posterior.

Atención: los elementos externos que apuntan a los archivos solo se introdujeron en SVN 1.6, por lo que esto puede o no ser un problema en su escenario.

SVN externos vienen en varios sabores . Puede configurarlos para carpetas o archivos (solo archivos con 1.6 y más reciente).

Y un externo puede señalar:

  1. un repositorio externo ( schema://server/path )
  2. relativo al mismo repositorio ( ^/path )
  3. relativo al esquema ( //server/path ) o
  4. relativo al directorio principal

Probablemente querrás 2 o 4 de esa lista. Lo más probable es que quieras 4, porque los archivos externos deben apuntar al mismo repositorio.

Larga historia corta

Si sus imágenes están en una carpeta como trunk/images y tiene una carpeta trunk/platforms/windows/images , puede configurar la propiedad svn:externals en trunk/platforms/windows para que las images nombre externo apunten a ../../images (es decir, directorio externo) o, suponiendo que desee utilizar una jerarquía diferente o diferentes nombres debajo de trunk/platforms/windows/images , podría crear archivos externos como ese (el subdirectorio de images debe existir en WC):

cd trunk/platforms/windows svn propedit svn:externals images

y agregue elementos externos individuales como este:

../../../images/filename.jpeg other-filename.jpeg

Tenga en cuenta que los directorios de destino deben existir en el repositorio y en la copia de trabajo, por lo que para un externo como este:

../../../images/filename.jpeg foo/other-filename.jpeg

el subdirectorio trunk/platforms/windows/images/foo debe existir.

La actualización de su copia de trabajo dará como resultado que los elementos externos se manifiesten como archivos versionados dentro de la copia de trabajo. Por lo tanto, son un tipo de enlaces simbólicos que existe en SVN y se manifiesta como archivos adecuados en la copia de trabajo, lo que significa que todas las plataformas pueden manejarlos por igual.