2009-03-29 5 views
33

Lors de l'ajout d'un contrôle utilisateur ou d'une référence de projet à un projet C# VS 2008, je ne peux ajouter qu'une seule configuration de l'assembly. Est-il possible d'ajouter des configurations séparées, en fonction de la configuration du projet de conteneur.C#/VS2008: Ajouter des références de débogage/libération séparées à un projet

E.g. Je développe un contrôle utilisateur, et je travaille sur un exemple d'application. Je souhaite ajouter le contrôle utilisateur de sorte qu'une version de débogage de l'exemple utilise la version de débogage du contrôle utilisateur et la version finale de l'exemple la version finale du contrôle utilisateur.

Des suggestions?

Répondre

25

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

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

Cependant, je serais préoccupé par ce que cela signifie pour les tests unitaires.

+0

La question est sur le point d'utiliser le même 'UserControl', de cette façon nous ne pouvons pas ajouter de référence à deux fois et Visual Studio ne lui permettant pas @Salvatore Previti répondre le meilleur – CallMeLaNN

5

Bien que la suggestion de @Marc Gravell fonctionne, existe-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 lors de la référence du projet Contrôle utilisateur au projet de l'application exemple. Lorsqu'une référence de projet est utilisée, Visual Studio ajoute automatiquement la version de débogage pour une version de débogage et la version de version pour la version de publication.

+1

Si le projet référencé est sous contrôle de source séparément (c'est peut-être un projet de bibliothèque à usage général) Des problèmes peuvent survenir lors de la tentative d'ajout du projet de référencement au contrôle source: –

31
<Reference Include="MyLibrary"> 
    <HintPath>..\$(Configuration)\MyLibrary.dll</HintPath> 
</Reference> 

Ce ajouter une référence ".. \ Debug \ MyLibrary.dll" si compilé en mode débogage ou .. \ Release \ MyLibrary.dll » si compilé en mode de libération.

+0

La bonne réponse + utilise le chemin relatif, car la DLL peut se trouver dans le dossier situé juste à l'extérieur de la solution – CallMeLaNN

+0

Et Visual S Le tudio (VS2010 dans mon cas) semble être poli et ne perturbe pas de telles modifications quand on modifie plus tard le fichier du projet à partir de l'IDE. Comme un test j'ai ajouté une nouvelle classe, tout a bien fonctionné. –

Questions connexes