35 votes

C# / VS2008 : Ajouter des références distinctes debug / release à un projet

Lorsque j'ajoute un contrôle utilisateur ou une référence de projet à un projet C# VS 2008, je ne peux ajouter qu'une seule configuration de l'assemblage. Est-il possible d'ajouter des configurations distinctes, en fonction de la configuration du projet conteneur.

Par exemple, je développe un contrôle utilisateur et je travaille sur un exemple d'application. Je veux ajouter le contrôle de l'utilisateur de sorte qu'une version de débogage de l'échantillon utilise la version de débogage du contrôle de l'utilisateur, et la version de publication de l'échantillon la version de publication du contrôle de l'utilisateur.

Des suggestions ?

32voto

Salvatore Previti Points 5842
<Reference Include="MyLibrary">
  <HintPath>..\$(Configuration)\MyLibrary.dll</HintPath>
</Reference>

Cela ajoute une référence \Debug\MyLibrary.dll "si la compilation se fait en mode débogage ou \Release\MyLibrary.dll si elle est compilée en mode "release".

0 votes

Excellente réponse + utilise le chemin relatif car la dll peut être dans le dossier juste en dehors de la solution.

0 votes

Et Visual Studio (VS2010 dans mon cas) semble être poli et ne perturbe pas ces modifications manuelles lorsque l'on modifie ultérieurement le fichier du projet à partir de l'IDE. En guise de test, j'ai ajouté une nouvelle classe, tout a bien fonctionné.

29voto

Marc Gravell Points 482669

Vous pouvez le faire en modifiant le fichier csproj ; ajoutez un attribut "Condition" à la référence.

<Reference Include="Foo" Condition="'$(Configuration)'=='Debug'"/>
<Reference Include="Bar" Condition="'$(Configuration)'=='Release'"/>

Cependant, je m'inquiète de ce que cela signifie pour les tests unitaires.

0 votes

La question est sur le point d'utiliser la même UserControl En effet, de cette façon, nous ne pouvons pas ajouter une référence à deux fois et Visual Studio ne le permet pas. La réponse de @Salvatore Previti est la meilleure.

5voto

Andy Points 15910

Bien que la suggestion de @Marc Gravell fonctionne, y a-t-il une raison pour laquelle vous ne voulez pas que les deux projets soient dans la même solution ? S'ils sont dans la même solution, vous pouvez ajouter une référence de projet en référençant le projet de contrôle de l'utilisateur au projet de l'application exemple. Lorsqu'une référence de projet est utilisée, Visual Studio ajoute automatiquement la version Debug pour une construction Debug, et la version Release pour la construction Release.

1 votes

Si le projet référencé est sous contrôle de la source séparément (il s'agit peut-être d'un projet de bibliothèque à usage général), des problèmes peuvent survenir lors de la tentative d'ajouter le projet référencé au contrôle de la source.

0voto

theandroid Points 74

Au lieu d'ajouter une référence à une .dll directement, ce qui vous oblige à choisir entre la .dll du dossier debug ou release, vous devez ajouter une référence en choisissant 'Référence du projet'. Ce lien explique comment ajouter une référence par le biais d'une .dll par rapport à une référence projet-projet. Pour votre objectif, vous devriez choisir la dernière option.

Voir également ma réponse pour savoir quand ajouter une référence en tant que .dll ou une référence en tant que projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X