es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C# buscar la ubicación del archivo de recurso xml tanto en la web como en la aplicación de línea de comando.

Estoy construyendo una biblioteca en .NET Standard 2.0. Tengo un archivo de recurso (xml) que necesito cargar desde el disco. El archivo de recurso no se puede incrustar, el administrador tiene la libertad de cambiarlo después de la implementación.

La biblioteca es compartida por una docena de aplicaciones. Algunas aplicaciones web, algunas aplicaciones de línea de comandos o WinForm. El archivo de recurso se establece como “Contenido” “Siempre copiar” en Visual Studio, por lo que siempre está junto a mi DLL en la carpeta bin. La biblioteca nunca sabe si está siendo referenciada por una aplicación de línea de comandos o web. ¿Pero cómo puedo encontrar la ubicación del archivo xml de recurso?

Assembly.GetExecutingAssemply().Location: Cuando se ejecuta desde IIS Express, devuelve una carpeta temporal extraña.

Environment.GetCurrentDirectory(): devuelve C:\Program Files (x86)\IIS Express\

System.Web.Hosting.HostingEnvironment.MapPath (“~/bin”): no está disponible desde la biblioteca.

Cualquier solución alternativa que evite el problema también es bienvenida, siempre y cuando el administrador pueda cambiar el archivo de recurso después de la implementación.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución alternativa para encontrar la ubicación del archivo xml de recursos es utilizar la propiedad AppDomain.CurrentDomain.BaseDirectory. Esta propiedad devolverá el directorio base que el resolvente de ensamblados utiliza para buscar ensamblados. Esto debería ser el mismo directorio que el archivo xml de recursos, por lo que se puede utilizar esta propiedad para obtener la ruta al archivo xml de recursos.

Comments are closed.