Comment partagez-vous le code entre les projets/solutions de Visual Studio?

j'ai deux solutions qui ont un code commun, donc j'aimerais l'extraire et le partager entre eux. De plus, j'aimerais pouvoir publier cette bibliothèque de façon indépendante parce qu'elle pourrait être utile à d'autres.

  • Quelle est la meilleure façon de le faire avec Visual Studio 2008?
  • Est un projet présent dans plus d'une solution?
  • ai-je une solution séparée pour le morceau de code séparé?
  • une solution peut-elle dépendre d'une autre?
203
demandé sur Winner Crespo 2009-07-12 21:24:38

16 réponses

Un projet peut être référencé par plusieurs solutions.

mettez votre bibliothèque ou votre code de base dans un projet, puis référez ce projet dans les deux solutions.

67
répondu ilivewithian 2009-08-24 16:12:05

vous pouvez" lier " un fichier de code entre deux projets. Faites un clic droit sur votre projet, choisissez Add - > Existing item , puis cliquez sur la flèche vers le bas à côté du bouton Add :

Screengrab

d'après mon expérience, le lien est plus simple que la création d'une bibliothèque. Le code lié produit un seul exécutable avec une seule version.

233
répondu Andomar 2017-03-23 13:53:56

File > Add > Existing Project... vous permettra d'ajouter des projets à votre solution actuelle. J'ajoute juste ceci puisqu'aucun des messages ci-dessus ne le souligne. Cela vous permet d'inclure le même projet dans plusieurs solutions.

29
répondu Aseem Kishore 2009-07-12 17:49:22

Vous peut "151920920, notamment un projet en plus d'une solution. Je ne pense pas qu'un projet ait un concept de la solution dont il fait partie. Cependant, une autre alternative est de faire la première Solution construire à un endroit bien connu, et de référence les binaires compilés. Ceci a l'inconvénient que vous aurez besoin de faire un peu de travail si vous voulez référencer différentes versions selon que vous construisez des configurations de publication ou de débogage.

I ne croyez pas que vous pouvez faire dépendre une solution d'une autre, mais vous pouvez effectuer vos constructions automatisées dans un ordre approprié via des scripts personnalisés. Fondamentalement, traitez votre bibliothèque commune comme s'il s'agissait d'une autre dépendance de tiers comme NUnit etc.

24
répondu Jon Skeet 2009-07-12 17:31:05

vous pouvez utiliser le Joker en ligne en utilisant la technique suivante (qui est la façon dont la solution de @Andomar est sauvegardée dans le .csproj)

<Compile Include="..\MySisterProject\**\*.cs">
  <Link>_Inlined\MySisterProject\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

:

    <Visible>false</Visible>

si vous voulez cacher les fichiers et/ou empêcher la Joker-Card include d'être élargi si vous ajoutez ou supprimez un élément d'un 'élément existant virtuel' dossier comme MySisterProject ci-dessus.

22
répondu Ruben Bartelink 2012-03-05 08:51:37

vous créeriez simplement un projet de bibliothèque de classe séparé pour contenir le code commun. Il n'a pas besoin de faire partie de toute solution qui l'utilise. Référez-vous à la bibliothèque de la classe de tout projet qui en a besoin.

Le seul truc est que vous aurez besoin d'utiliser un fichier de référence de référence du projet, car il ne fera pas partie des solutions qui s'y réfèrent. Cela signifie que la sortie réelle de l'assemblée devra être placé dans un endroit qui peut être consulté par quiconque construit un projet qui s'y réfère. Cela peut être fait en plaçant l'assemblée sur une action, par exemple.

17
répondu John Saunders 2009-07-12 17:29:16

extraire le code commun dans un projet de bibliothèque de classe et ajouter ce projet de bibliothèque de classe à vos solutions. Ensuite, vous pouvez ajouter une référence au code commun d'autres projets en ajoutant une référence de projet à cette bibliothèque de classe. L'avantage d'avoir une référence de projet par rapport à une référence binaire/assemblée est que si vous changez votre configuration de construction en debug, release, custom, etc, le projet de bibliothèque de classe commune sera construit sur la base de cette configuration également.

8
répondu Mehmet Aras 2009-07-12 17:36:45

vous pouvez inclure le même projet dans plus d'une solution, mais vous êtes assuré de rencontrer des problèmes dans le futur (les chemins relatifs peuvent devenir invalides lorsque vous déplacez des répertoires par exemple)

après des années de lutte avec cela, j'ai finalement trouvé une solution utilisable, mais elle exige que vous utilisiez Subversion pour le contrôle source (ce qui n'est pas une mauvaise chose)

au niveau du répertoire de votre solution, ajoutez un svn: externals propriété pointant vers les projets que vous voulez inclure dans votre solution. Subversion retirera le projet du dépôt et le stockera dans un sous-dossier de votre fichier solution. Votre fichier solution peut simplement utiliser des chemins relatifs pour se référer à votre projet.

si je trouve plus de temps, je vous expliquerai en détail.

7
répondu Philippe Leybaert 2009-07-12 17:31:32

c'est une bonne idée de créer une bibliothèque de classe dll qui contiennent toutes les fonctionnalités communes. Chaque solution peut faire référence à cette dll indépendamment des autres solutions.

en effet , c'est la façon dont nos sources sont organisées dans mon travail (et je crois que dans beaucoup d'autres endroits).

soit dit en passant , la Solution ne peut pas dépendre explicitement d'une autre solution.

5
répondu user88637 2009-07-12 17:52:14

si vous tentez de partager du code entre deux types de projets différents (c.-à-d.: desktop project et un projet mobile), vous pouvez regarder dans le dossier "solutions partagé . Je dois le faire pour mon projet actuel car les projets mobile et desktop nécessitent des classes identiques qui ne sont que dans un seul fichier. Si vous empruntez cette voie, n'importe lequel des projets qui ont un lien avec le fichier peut y apporter des changements et tous les projets seront reconstruits en fonction de ces changements.

4
répondu Stevoni 2009-08-24 17:13:37

il y a de très bonnes raisons d'utiliser" ajouter des liens de fichiers existants " pour réutiliser du code dans des projets, et c'est là que vous devez faire référence à différentes versions de bibliothèques dépendantes et les prendre en charge.

faire plusieurs assemblages avec des références à différents assemblages externes n'est pas facile à faire autrement sans dupliquer votre code, ou en utilisant 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 pour créer des projets de "construction" en utilisant des liens de fichiers existants lorsque vous avez besoin de créer les assemblages qui font référence à différentes versions de ces assemblages externes.

4
répondu Rick Sipin 2012-09-28 13:57:43

une façon plus simple d'inclure un fichier de classe d'un projet dans un autre projet est d'ajouter le projet dans la solution existante, puis D'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écalaminant en utilisant la directive en haut de n'importe quelle classe.

2
répondu Amarendra K 2013-08-04 06:47:26

les deux principales étapes sont

1 - Créer un C++ dll

Dans visual studio

New->Project->Class Library in c++ template. Name of project here is first_dll in 
visual studio 2010. Now declare your function as public in first_dll.h file and 
write the code in first_dll.cpp file as shown below.

Fichier d'en-Tête code

// first_dll.h

using namespace System;

namespace first_dll 
{

public ref class Class1
{
public:
    static double sum(int ,int );
    // TODO: Add your methods for this class here.
};
}

Fichier RPC

//first_dll.cpp
#include "stdafx.h"

#include "first_dll.h"

namespace first_dll
{

    double Class1:: sum(int x,int y)
    {
        return x+y;
    }

 }

Cochez Cette

**Project-> Properties -> Configuration/General -> Configuration Type** 

cette option devrait être Bibliothèque dynamique(.dll) et construire la solution/projet maintenant.

first_dll.dll fichier est créé dans dossier de débogage

2 - la Liaison en C# projet

Ouvrir un projet C#

Rightclick on project name in solution explorer -> Add -> References -> Browse to path 
where first_dll.dll is created and add the file.

ajouter cette ligne en haut dans c # projet

Using first_dll; 

maintenant, la fonction de dll peut être consultée en utilisant l'énoncé ci-dessous dans une certaine fonction ""

double var = Class1.sum(4,5);

j'ai créé dll en C++ projet en VS2010 et utilisé dans VS2013 c # projet.Ça marche bien.

2
répondu Croko 2015-12-31 05:09:25

vous pouvez héberger un serveur NuGet interne et partager les bibliothèques communes qui seront partagées dans d'autres projets internes et externes.

plus loin sur ce lire

2
répondu Si Zi 2017-10-03 09:57:27

à partir de VisualStudio 2015, Si vous gardez tout votre code dans une solution, vous pouvez partager le code par ajouter un projet partagé . Puis ajouter une référence à ce projet partagé pour chaque projet que vous souhaitez utiliser le code, ainsi que l'utilisation correcte des directives.

0
répondu wecky 2018-06-13 16:35:33

Maintenant, vous pouvez utiliser le projet partagé

projet partagé est un excellent moyen de partager du code commun à travers plusieurs applications que nous avons déjà expérimenté avec le type de projet partagé dans Visual Studio 2013 dans le cadre du développement D'applications universelles Windows 8.1, mais avec Visual Studio 2015, il s'agit D'un nouveau modèle de projet autonome; et nous pouvons l'utiliser avec d'autres types d'applications comme Console, bureau, téléphone, Boutique App, etc.. Ce sont les types de projet est extrêmement utile lorsque nous voulons partager un code commun, logique ainsi que des composants à travers plusieurs applications avec dans une plate-forme unique. Cela permet également d'accéder à L'API spécifique à la plate-forme, aux actifs, etc.

enter image description here

pour plus d'informations, consultez ce

0
répondu Hussein Khalil 2018-09-21 14:21:10