2009-09-24 5 views
4

J'ai déplacé mon application Microsoft Visual Studio 6.0/C++/MFC vers Visual Studio 2008 SP1 à l'aide des nouvelles classes MFC Feature Pack. Je n'utilise explicitement rien du .NET Framework. Cependant, nous avons des problèmes d'installation sur un système sur lequel .NET Framework 3.5 SP1 n'est pas déjà installé. Installshield ne parvient pas à charger une DLL d'application dans laquelle il doit appeler des routines. Existe-t-il une dépendance implicite au .NET Framework intégré à chaque application (C++/MFC) construite avec VS2008? Et sinon, comment puis-je savoir ce qui dans l'application provoque une dépendance .NET? Je voudrais éliminer cette dépendance si possible.Dépendance non désirée sur .NET Framework

Merci, Barry

+4

Ainsi est-il votre application qui échoue ou est-il InstallShield défaut lors de l'installation? –

+0

C'est quand l'installation tente de charger une DLL que j'ai construite. Nous construisons toutes nos DLL en utilisant nmake, pas en studio visuel, et n'utilisons pas le commutateur/clr. – Barry

+0

Pouvez-vous inclure le message d'erreur dans votre message? Cela le rendra plus consultable. –

Répondre

4

La dépendance est très probablement le CRT90 (VC) runtime. Vous devez compiler vos actions personnalisées dll statiquement liées à l'exécution au lieu de la liaison dynamique par défaut. Vous n'avez pas besoin de créer l'application entière liée statiquement, InstallShield peut installer le CRT pour vous; c'est juste la dll d'actions personnalisées qui échoue, car elle s'exécute avant qu'IS puisse exécuter le module de fusion CRT.

+0

intéressant. Je pense que vous pourriez être sur quelque chose ici. Je vais essayer cela et vous laisser savoir si cela fonctionne. – Barry

2

InstallShield ne parvient pas à charger une dll d'application qu'il a besoin d'appeler routines.

Cela sonne comme vous rencontrez un problème dans votre installateur.

Est-ce que c'est DLL votre DLL? Si tel est le cas, vous devez inclure quelque chose qui utilise le commutateur de compilation /clr (qui ajoute une dépendance .NET) ou qui référence une bibliothèque (la vôtre ou une tierce partie) qui ajoute la déférence .NET.

Il n'y a rien dans VC++ 2008 qui nécessitera .NET. Vous pouvez créer une application MFC qui ne nécessite que des temps d'exécution VC.

0

Je ne suis pas certain de comprendre le problème ici, mais j'ai rencontré un problème similaire avec les projets de déploiement. Utilisez-vous le projet de déploiement MSI (.vdproj) fourni par Visual Studio? Dans ce cas ...

Si vous ajoutez dépendance .NET à un projet .vdproj puis supprimer il, la dépendance sera toujours là. C'est un bug dans l'interface graphique! La dépendance semble avoir disparu, mais c'est toujours là!

Ce que vous devez faire est d'ouvrir le fichier .vdproj dans un éditeur de texte et supprimer la dépendance .NET manuellement.

3

Veuillez vous référer à ce article de Microsoft. Dans le tri, lorsque vous installez .NET Framework 4.5, vos projets indépendants .NET dépendront désormais du framework .NET.

Solution:

  1. le projet de décharger l'IDE, puis ouvrez le fichier de projet (.vcproj) en XML ou en mode texte.

  2. sous la balise racine xml (à savoir "projet"), ajoutez le fragment de document suivant:

    <PropertyGroup> <AddAdditionalExplicitAssemblyReferences> faux </AddAdditionalExplicitAssemblyReferences > </PropertyGroup >

  3. reload votre projet.

  4. en plus des étapes précédentes décrites dans l'article de Microsoft, cochez « la condition sine qua non » de votre projet d'installation et décochez le framework .NET

  5. retirer la concernant « l'état de lancement ». Reconstruire msi, maintenant la dépendance doit être supprimée.

Questions connexes