Estoy tratando de obtener la ruta de un archivo de imagen que agregué en el explorador de soluciones en Visual Studio, pero no pude obtener la ruta relativa de esa imagen. H es la estructura de archivos de mi proyecto:
/ BulutDepoProject / FolderIcon Folder.ico Main.cs
Puedo obtener la imagen como esta:
"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico"
Pero debería poder conseguirlo con algo como:
"~\\FolderIcon\\Folder.ico"
Supongo que no conozco la sintaxis exacta, así que no puedo recuperar la imagen. :(
c#
visual-studio
Tolga Evcimen
fuente
fuente
Respuestas:
Cuando se da el caso de que quieras usar cualquier tipo de archivo externo, ciertamente hay una manera de ponerlos en una carpeta dentro de tu proyecto, pero no tan válida como obtenerlos de los recursos. En un proyecto de Visual Studio normal, debe tener un
Resources.resx
archivo debajo de laProperties
sección; de lo contrario, puede agregar fácilmente su propioResource.resx
archivo. Y agregue cualquier tipo de archivo en él, puede acceder al tutorial para agregar archivos de recursos a su proyecto aquí .Después de tener archivos de recursos en su proyecto, llamarlos es tan fácil como esto:
var myIcon = Resources.MyIconFile;
Por supuesto, debe agregar la
using Properties
declaración como esta:using <namespace>.Properties;
fuente
readonly
todos modos, así que ....Llego un poco tarde y no estoy seguro de si esto es lo que estás buscando, pero pensé en agregarlo en caso de que alguien más lo encuentre útil.
Suponga que esta es su estructura de archivos:
Necesita escribir su ruta relativa al
Main.exe
archivo. Entonces, desea accederFolder.ico
, en suMain.cs
puede usar:String path = "..\\FolderIcon\\Folder.ico"
¡Eso pareció funcionar para mí!
fuente
string path = ".\\FileName.txt"
<Project>/Debug
por lo tanto, funciona para el entorno VS Debug. Pero si sale del IDE ... o ejecuta el EXE desde un directorio de trabajo diferente, seguramente se romperá.Omita el "~ \":
var path = @"FolderIcon\Folder.ico";
~\
no significa nada en términos del sistema de archivos. El único lugar que he visto que se usa correctamente es en una aplicación web, donde ASP.NET reemplaza la tilde con la ruta absoluta a la raíz de la aplicación.Por lo general, puede asumir que las rutas son relativas a la carpeta donde se encuentra el EXE. Además, asegúrese de que la imagen se especifique como "contenido" y "copiar si es más reciente" / "copiar siempre" en la pestaña de propiedades en Visual Studio.
fuente
También encontré el mismo problema y pude resolverlo. Déjame explicarte los pasos que apliqué. Lo explicaré de acuerdo con su escenario.
De acuerdo con mi método, necesitamos usar la clase 'Ruta' y la clase 'Ensamblador' para obtener la ruta relativa.
Entonces, primero importe System.IO y System.Reflection en el uso de declaraciones.
Luego escriba la línea de código dada a continuación.
var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);
En realidad, la línea anterior almacena la ruta del directorio de salida de su proyecto (aquí, el directorio de 'salida' se refiere a la carpeta Debug de su proyecto).
Ahora copie su directorio FolderIcon en la carpeta Debug. Luego escriba la línea dada a continuación.
var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");
Ahora, esta variable 'iconPath' contiene la ruta completa de su Folder.ico. Todo lo que tiene que hacer es almacenarlo en una variable de cadena. Use la línea de código a continuación para eso.
string icon_path = new Uri(iconPath ).LocalPath;
Ahora puede utilizar esta variable de cadena icon_path como su ruta relativa al icono.
Gracias.
fuente
file:
frente al camino?Assembly.GetExecutingAssembly().Location
si está seguro de que está tratando con un archivo (EXE / DLL)Creo que usar esto será lo más fácil
new Uri("pack://application:,,/FolderIcon/" + youImageICO);
o este código funcionará en cualquier máquina que si su carpeta está en su proyecto raíz si desea cambiarla ... simplemente cambie esta sección @ ".. \"
public static string bingPathToAppDir(string localPath) { string currentDir = Environment.CurrentDirectory; DirectoryInfo directory = new DirectoryInfo( Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath))); return directory.ToString(); }
fuente
En Visual Studio, haga clic en el archivo 'Folder.ico' en el panel del Explorador de soluciones. Luego verá el panel Propiedades. Cambie el comportamiento de 'Copiar al directorio de salida' a 'Copiar si es más reciente'. Esto hará que Visual Studio copie el archivo en el directorio de la bandeja de salida.
Ahora, para obtener la ruta del archivo usando la ruta relativa, simplemente escriba:
string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";
Espero que haya ayudado.
fuente