C # Obtenir le chemin relatif dans l’assembly référencé

J’ai 2 projets Projet A, Projet B, projet A a une référence au projet B, le projet A est un exécutable.

Project A --> Project B 

dans le projet B, il existe un répertoire appelé “MyFolder”

donc la hiérarchie soulotion est la suivante:

  MySolution - A - B - MyFolder 

Comment puis-je obtenir un chemin relatif vers MyFolder à partir du projet A (fichier exécutable).

J’ai trouvé beaucoup de réponses qui indiquent ce qui suit:

  sring path = Assembly.GetAssembly(typeof(SomeClassInBProject)).Location; 

Le chemin que j’ai obtenu de ceci est le chemin de B.dll dans le répertoire bin \ debug de A, comment puis-je récupérer un chemin avec ce fichier .dll.

Modifier :

iv’e a également essayé:

  Assembly assembly = Assembly.GetAssembly(typeof(SomeClassInBProject)); FileStream fs = assembly.GetFile(@"MyFolder\myFile"); and FileStream fs = assembly.GetFile("MyFolder\myFile"); and FileStream fs = assembly.GetFile("myFile"); 

fs j’ai toujours nul.

Uri.MakeRelativeUri est- il ce que vous cherchez?

 ssortingng pathA = Assembly.GetExecutingAssembly().Location; ssortingng pathB = Assembly.GetAssembly(typeof(SomeClassInBProject)).Location; Uri pathAUri = new Uri(pathA); Uri pathBUri = new Uri(pathB); ssortingng relativePath = pathAUri.MakeRelativeUri(pathBUri).OriginalSsortingng; ssortingng relativeMyFolder = Path.Combine(relativePath, "MyFolder"); 

Mettre à jour

Vous pouvez utiliser la méthode Assembly.GetFile () qui renvoie un FileStream. FileStream a une propriété Name vous pouvez utiliser dans le code ci-dessus.

À moins que cela ne soit impossible, je vous recommande d’ouvrir la fenêtre Propriétés *, de définir la propriété Build Action de Embedded Resource et de vous assurer que l’ Copy to Output Directory est définie sur Do not copy . Vous pouvez ensuite utiliser Assembly.GetFile () pour y accéder.

 Assembly assembly = Assembly.GetAssembly(typeof(SomeClassInBProject)); using (FileStream fs = assembly.GetFile("myfile")) { // Manipulate the FileStream here } 

* Une fois le fichier sélectionné, appuyez sur Alt + Entrée ou cliquez avec le bouton droit de la souris sur le fichier et sélectionnez Properties