2

Ma solution se compose de 2 projets exécutables et de quelques DLL. Project1 est un projet de périphérique intelligent, Project2 est un projet Windows Forms.
Les deux projets utilisent les mêmes bibliothèques, la raison en est que je veux tester mes bibliothèques sur PC avant de les déployer sur l'appareil.Visual Studio - comment créer deux projets en utilisant les mêmes sources

Le problème est que le type de projet DLL peut être Smart Device Class Library ou Class Library, pas les deux. Je ne peux pas ajouter une référence du projet SD à WF et vice versa. J'ai été en mesure d'ajouter une référence du projet SD à un fichier dll (généré à partir du projet Bibliothèque de classes) au lieu du projet lui-même, mais pour une raison inconnue j'ai reçu le message "ne peut pas charger le type XXX de l'assemblage YYY". Cela ne dépend pas de mon code, parce que quand j'ai créé un projet séparé pour les mêmes sources, tout allait bien.

La seule solution que j'ai trouvé est de créer 2 types de projets pour chaque bibliothèque, mais je ne sais pas comment faire 2 projets basés sur les mêmes sources.

Répondre

8

Vous pouvez ajouter tous les fichiers normalement à un projet.

Vous pouvez ensuite cliquer avec le bouton droit sur l'autre projet, cliquer sur Ajouter, Fichier existant, sélectionner les fichiers, cliquer sur la flèche vers le bas à côté du bouton Ajouter et cliquer sur Ajouter en tant que lien.

+0

Il répond à ma question. Merci – kmalmur

+0

Oui, mais il y a un problème avec cette solution. Vous pouvez dans l'application PC modifier le code pour n'utiliser que des outils de framework complets qui casseront la version de framework intelligente mais qui continueront bien dans votre application "framework complet". – Quibblesome

+0

@Quibblesome: Tout ce que vous avez à faire est d'ajuster F6 et cela va construire les deux. – SLaks

1

Normalement, vous pouvez référencer un projet de bibliothèque de classes Smart Device à partir d'un projet Smart Device EXE ou d'un projet WinForms EXE complet. Toutefois, il est possible de faire référence aux composants .NetCF uniquement dans la bibliothèque de classes Smart Device qui rendra la DLL non fonctionnelle lorsqu'elle est référencée à partir d'un projet EXE à structure complète.

Quels assemblages sont effectivement mentionnés dans votre message d'erreur (je suppose qu'il ne littéralement dire "XXX" et "YYY")?

+0

1. Lorsque j'ajoute une référence à partir du projet EXE Full-framework, le message suivant s'affiche: "L'ajout d'une référence à un projet de périphérique peut produire des résultats inattendus. Voulez-vous continuer?" - il ne m'encourage pas pour cette solution 2. XXX est le nom de ma classe, YYY est l'assemblage où il devrait être localisé. – kmalmur

3

Je ne suis pas sûr si vous avez compris la réponse de MusiGenesis correctement. La prémisse est de créer vos bibliothèques en tant que bibliothèques de classes d'unités de carte à puce, puis de référencer ces bibliothèques de classes d'unités intelligentes dans les deux projets "framework complet" et "WinCE".

Maintenant, les applications SmartDevice ne peuvent pas référencer les bibliothèques Full Framework, mais les applications Full Framework peuvent référencer les bibliothèques de périphériques intelligents.

donc votre assortiment final du projet pourrait ressembler à ceci:

  • Library.dll - Une bibliothèque de dispositif intelligent
  • FullFramework.exe une application Windows Forms pour cadre complet qui fait référence Library.dll
  • WinCE .exe une application Compact Framework qui fait référence à Library.dll

La configuration ci-dessus se construit correctement. Juste être au courant de certain differences entre le cadre compact et le cadre complet.

+0

Je comprends la réponse de MusiGenesis. Lorsque j'ajoute une référence dans l'application FullFramework.exe à Library.dll (une bibliothèque de périphériques intelligents), le message suivant s'affiche: "L'ajout d'une référence à un projet de périphérique peut produire des résultats inattendus. Voulez-vous continuer?" – kmalmur

+0

Vous cliquez sur "Oui" et ignorez ce message. Ce message est un peu trompeur. Il ne produira pas de résultats inattendus. – Quibblesome

Questions connexes