web-dev-qa-db-fra.com

Visual Studio: chemins d'accès des références d'assemblage relatives

Lors de l'ajout d'une référence à un assembly situé dans le répertoire de la solution, existe-t-il un moyen de l'ajouter relativement, de sorte que, lorsqu'il est archivé et sorti d'un référentiel, il soit correctement référencé dans les projets?

84
theringostarrs

Pour développer le commentaire d'origine de Pavel Minaev, l'interface graphique de Visual Studio prend en charge les références relatives en supposant que votre .sln est la racine de la référence relative. Ainsi, si vous avez une solution C:\myProj\myProj.sln, toutes les références que vous ajoutez dans les sous-dossiers de C:\myProj\ sont automatiquement ajoutées en tant que références relatives.

Pour ajouter une référence relative dans un répertoire distinct, tel que C:/myReferences/myDLL.dll, procédez comme suit:

  1. Ajoutez la référence dans l'interface graphique de Visual Studio en cliquant avec le bouton droit de la souris sur le projet dans l'Explorateur de solutions et en sélectionnant Ajouter une référence ...
  2. Recherchez le fichier * .csproj contenant cette référence et ouvrez-le dans un éditeur de texte. 
  3. Editez le <cheminInfo> pour qu'il soit égal à 

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

Ceci fait maintenant référence à C:\myReferences\myDLL.dll.

J'espère que cela t'aides. 

114
CrimsonX

Oui, créez simplement un répertoire dans votre solution tel que lib /, puis ajoutez votre dll à ce répertoire du système de fichiers et ajoutez-le au projet (Ajouter-> Elément existant-> etc.) Ajoutez ensuite la référence en fonction de votre projet. 

Je l'ai fait plusieurs fois sous svn et sous cvs.

8
Freddy

Pour ce faire, le moyen le plus simple consiste probablement à simplement ajouter la référence à l’assemblage, puis à patcher (manuellement) la représentation textuelle de la référence dans le fichier de projet Visual Studio correspondant (extension .csproj) afin qu’elle devienne relative.

J'ai fait cela beaucoup de fois dans VS 2005 sans aucun problème.

2
Uwe Honekamp

Dans VS 2017, c'est automatique. Donc, juste Add Reference comme d'habitude. 

Notez que Reference Properties chemin absolu est affiché, mais .vbproj/.csproj relatif est utilisé.

<Reference Include="NETnetworkmanager">
      <HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
1
Iurii

Comme mentionné précédemment, vous pouvez modifier manuellement le fichier .csproj de votre projet afin de l'appliquer manuellement.

J'ai également remarqué que Visual Studio 2013 tente d'appliquer un chemin relatif au hintpath de référence, probablement à cause d'une tentative de rendre le fichier de projet plus portable.

0
Nick Louloudakis