J'ai deux solutions qui ont un code commun, donc je voudrais l'extraire et le partager entre elles. De plus, j'aimerais pouvoir publier cette bibliothèque indépendamment car elle pourrait être utile à d'autres.
- Quelle est la meilleure façon de le faire avec Visual Studio 2008?
- Un projet est-il présent dans plusieurs solutions?
- Ai-je une solution distincte pour le morceau de code séparé?
- Une solution peut-elle dépendre d'une autre?
.net
visual-studio
code-sharing
pupeno
la source
la source
Réponses:
Un projet peut être référencé par plusieurs solutions.
Mettez votre bibliothèque ou votre code principal dans un projet, puis référencez ce projet dans les deux solutions.
la source
Vous pouvez "lier" un fichier de code entre deux projets. Cliquez avec le bouton droit sur votre projet, choisissez
Add
->Existing item
, puis cliquez sur la flèche vers le bas à côté duAdd
bouton:D'après mon expérience, la liaison est plus simple que la création d'une bibliothèque. Le code lié résulte en un seul exécutable avec une seule version.
la source
File > Add > Existing Project...
vous permettra d'ajouter des projets à votre solution actuelle. J'ajoute simplement cela car aucun des messages ci-dessus ne le souligne. Cela vous permet d'inclure le même projet dans plusieurs solutions.la source
Vous pouvez inclure un projet dans plusieurs solutions. Je ne pense pas qu'un projet ait un concept de la solution dont il fait partie. Cependant, une autre alternative consiste à créer la première solution à un endroit bien connu et à référencer les binaires compilés. Cela présente l'inconvénient de nécessiter un peu de travail si vous souhaitez référencer différentes versions selon que vous construisez des versions ou des configurations de débogage.
Je ne pense pas que vous puissiez faire dépendre une solution d'une autre, mais vous pouvez effectuer vos builds automatisés dans un ordre approprié via des scripts personnalisés. Traitez votre bibliothèque commune comme s'il s'agissait d'une autre dépendance tierce comme NUnit, etc.
la source
Vous pouvez joker en ligne en utilisant la technique suivante (qui est la manière dont la solution de @ Andomar est enregistrée dans le .csproj)
Mettez:
Si vous souhaitez masquer les fichiers et / ou empêcher que le caractère générique ne soit étendu si vous ajoutez ou supprimez un élément d'un dossier 'élément existant virtuel' comme
MySisterProject
ci-dessus.la source
<Import
édités dans des fichiers .csproj sont mis en cache jusqu'à ce que vous rechargiez les solutions comme vous le dites.Vous devez simplement créer un projet de bibliothèque de classes distinct pour contenir le code commun. Il n'a pas besoin de faire partie d'une solution qui l'utilise. Référencez la bibliothèque de classes à partir de tout projet qui en a besoin.
La seule astuce est que vous devrez utiliser une référence de fichier pour référencer le projet, car il ne fera pas partie des solutions qui s'y réfèrent. Cela signifie que l'assemblage de sortie réel devra être placé dans un emplacement accessible à toute personne qui construit un projet qui y fait référence. Cela peut être fait en plaçant l'assembly sur un partage, par exemple.
la source
Vous pouvez inclure le même projet dans plusieurs solutions, mais vous êtes assuré de rencontrer des problèmes à un moment donné (les chemins relatifs peuvent devenir invalides lorsque vous déplacez des répertoires par exemple)
Après des années de difficultés, j'ai finalement trouvé une solution viable, mais cela vous oblige à utiliser Subversion pour le contrôle de code source (ce qui n'est pas une mauvaise chose)
Au niveau du répertoire de votre solution, ajoutez une propriété svn: externals pointant vers les projets que vous souhaitez inclure dans votre solution. Subversion extraira le projet du référentiel et le stockera dans un sous-dossier de votre fichier de solution. Votre fichier de solution peut simplement utiliser des chemins relatifs pour faire référence à votre projet.
Si je trouve encore du temps, je vais l'expliquer en détail.
la source
svn:externals
des liens durs vers un référentiel. Lorsque vous déplacez le référentiel, les liens externes pointent toujours vers l'ancien référentiel.Extrayez le code commun dans un projet de bibliothèque de classes et ajoutez ce projet de bibliothèque de classes à vos solutions. Vous pouvez ensuite ajouter une référence au code commun d'autres projets en ajoutant une référence de projet à cette bibliothèque de classes. L'avantage d'avoir une référence de projet par opposition à une référence binaire / d'assembly est que si vous changez votre configuration de construction en débogage, version, personnalisé, etc., le projet de bibliothèque de classes communes sera également construit en fonction de cette configuration.
la source
C'est une bonne idée de créer une bibliothèque de classes dll contenant toutes les fonctionnalités courantes. Chaque solution peut référencer cette dll indépendamment indépendamment des autres solutions.
En fait, c'est ainsi que nos sources sont organisées dans mon travail (et je crois en beaucoup d'autres endroits).
Soit dit en passant, la solution ne peut pas dépendre explicitement d'une autre solution.
la source
Deux étapes principales impliquées sont
1- Création d'une DLL C ++
En studio visuel
Code du fichier d'en-tête
Fichier Cpp
Vérifie ça
cette option doit être Dynamic Library (.dll) et générer la solution / le projet maintenant.
Le fichier first_dll.dll est créé dans le dossier Debug
2- Le lier dans un projet C #
Projet Open C #
Ajoutez cette ligne en haut dans le projet C #
Maintenant, la fonction de la DLL est accessible en utilisant l'instruction ci-dessous dans une fonction
J'ai créé la DLL dans le projet c ++ dans VS2010 et l'ai utilisé dans le projet VS2013 C #.
la source
Vous pouvez héberger un serveur NuGet interne et partager les bibliothèques communes qui seront partagées dans d'autres projets en interne et en externe.
Plus loin sur cette lecture
la source
Si vous essayez de partager du code entre deux types de projets différents (c'est-à-dire: projet de bureau et projet mobile), vous pouvez consulter le dossier des solutions partagées . Je dois le faire pour mon projet actuel car les projets mobiles et de bureau nécessitent tous deux des classes identiques qui ne sont que dans un seul fichier. Si vous suivez cette voie, tous les projets auxquels le fichier est lié peuvent y apporter des modifications et tous les projets seront reconstruits en fonction de ces modifications.
la source
Il y a de très bonnes raisons d'utiliser "l'ajout de liens de fichiers existants" lors de la réutilisation de code entre projets, et c'est lorsque vous devez référencer et prendre en charge différentes versions de bibliothèques dépendantes.
Il n'est pas facile de créer plusieurs assemblys avec des références à différents assemblys externes sans dupliquer votre code ou utiliser des astuces avec le contrôle du code source.
Je crois qu'il est plus facile de maintenir un projet pour le développement et le test unitaire, puis de créer des projets de «construction» en utilisant des liens de fichiers existants lorsque vous devez créer les assemblys qui référencent différentes versions de ces assemblages externes.
la source
Une façon plus simple d'inclure un fichier de classe d'un projet dans un autre projet consiste à ajouter le projet dans la solution existante, puis à ajouter la référence DLL du nouveau projet dans le projet existant. Enfin, vous pouvez utiliser les méthodes de la classe ajoutée en décalant à l'aide de la directive en haut de la classe any.
la source
Depuis VisualStudio 2015, si vous conservez tout votre code dans une seule solution, vous pouvez partager du code en ajoutant un projet partagé . Ajoutez ensuite une référence à ce projet partagé pour chaque projet dans lequel vous souhaitez utiliser le code, ainsi que les directives d'utilisation appropriées.
la source
Vous pouvez maintenant utiliser le projet partagé
pour plus d'informations, vérifiez ceci
la source