2009-06-30 8 views
3

J'écris des programmes utilisés en interne par notre société. J'ai créé plusieurs DLL de support auxquelles je fais référence dans de nombreux projets. (une aide générique d'accès aux données par exemple) Au lieu d'avoir une copie de "datatools.dll" dans chaque répertoire de programme (semble être le comportement par défaut) J'aimerais avoir une copie qui peut être référencée par de nombreux programmes. Un peu comme mon propre répertoire system32.Référencement de DLL partagées dans le projet VS Deployment

J'ai ajouté un "chemin de référence" à mon projet. Je compile le projet puis le projet de déploiement. L'installateur fonctionne bien. Les DLL partagées sont dans mon chemin de référence. Mais lorsque j'exécute le programme, j'obtiens l'erreur "System.IO.FileNotFoundException: Impossible de charger le fichier ou l'assemblage 'datatools.dll, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = null' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié." Si je déplace datatools.dll dans le même dossier que l'exe, le programme s'exécute sans problème. Puis-je créer et utiliser un emplacement partagé pour les DLL partagées? Ou est-ce juste une mauvaise idée?

Répondre

3

Vous pouvez vous inscrire (en utilisant VS2k8, regardez dans les onglets de propriétés du projet) « em et de les mettre dans le GAC

+0

Merci à tous pour votre réponse rapide. J'utilise VS2k8. J'ai regardé l'option Signe que vous et Yuliy avez mentionnée, mais craignez que ce soit sur ma tête. Je vais vivre avec plusieurs copies sur les machines de mes utilisateurs. – mohnston

+0

toute idée si je peux le faire sans le signer ou non ??? Je veux dire que je veux que ces DLL communes doivent être dans un dossier isolé et pas dans mon dossier de l'application. Certaines DLL ne sont pas nos propres DLL et c'est pourquoi le signal est un problème. – Denish

+0

s'il vous plaît laissez-moi savoir mohnston si vous avez une solution finale ou non – Denish

2

Si vous utilisez .NET, l'approche typique de ce genre de problème est de déployer les assemblages partagés vers le GAC (Global Assembly Cache), idéalement comme son propre projet de déploiement.

1

On dirait que vous avez une solution multi-projets. Vérifiez que tous les projets qui référencent l'assembly DataTools.dll pointent vers le bon (nouveau) emplacement. En fonction de votre IDE, vous pourriez avoir besoin d'essayer quelque chose de génial comme enlever l'ancienne référence, la construire (et la regarder s'écraser) puis la rajouter à partir du nouvel emplacement.

Questions connexes