J'ai créé une application de console à l'aide de C # qui fait référence à des DLL externes. Quand je l'exécute sur mon machine de développement, tout fonctionne bien. Sur la machine de production, je reçois une erreur d'initiation de type. En regardant dans cette situation, il semble que cela puisse le faire car l'application ne peut pas trouver les DLL référencées. P>
sur ma boîte de développement, les DLL référencées sont dans le GAC, mais pas sur la production. Lorsque vous retirez les DLL du GAC sur la zone de développement, la même erreur se produit (sauf si je l'exécute à partir d'une version locale Visual Studio Build en mode débogage). P>
Je suis plus familier avec les configurations de sites Web et je sais que les DLL peuvent être placées dans le répertoire bin ou le GAC afin de pouvoir être trouvés par l'application Web. Mais je ne suis pas sûr de la manière dont cela fonctionne pour les applications de console. P>
Je suis réticent à mettre la DLL dans le GAC sur la boîte de production, car il n'est nécessaire que pour cette petite application. Y a-t-il d'autres moyens de déployer l'application de la console et de trouver ses assemblages requis? P>
Voici l'exception que je reçois: p>
Erreur 1 Le nom ou le nom d'espace de noms 'Entrée' n'a pas pu être trouvé (êtes-vous manquant une directive ou une référence d'assemblage?) C: \ Documents et Paramètres \ Hacker \ Mes documents \ Visual Studio 2005 \ Projects \ Basic \ Basic \ Program.cs 10 8 Basic P> blockQuote>
5 Réponses :
La réponse la plus simple consiste à placer la DLL dans le même répertoire que l'application de la console et il les trouvera. p>
La réponse plus longue est assez complexe car il existe de nombreux facteurs qui influencent comment et où le CLR recherche des assemblages référencés. Je vous encourage à jeter un coup d'œil à l'article suivant de MSDN qui passe très en détail sur la manière dont cela fonctionne. P>
Votre lien vient de rediriger vers tous les problèmes de magazine MSDN. Vous souvenez-vous de quelle question il s'agissait?
Lorsque vous examinez l'exception, vous obtenez (et vous devrez peut-être plonger dans l'exception interne), vous devez voir un journal de tous les emplacements recherchés (le «journal de fusion»). P>
Je recommanderais simplement de placer les DLL à charge dans le même répertoire que votre application de console. P>
En fait, il doit simplement afficher ex.tostring () code>.
- Right click on the assembly name in your project reference. - select Properties - In the properties window set CopyLocal to true
Oh, j'ai oublié de mentionner cela dans ma réponse. : P +1
Vous pouvez déployer des dlls référencés où vous voulez. Vous devez ajouter une application APP.Config (Ajouter / Nouveau poste / fichier de configuration de l'application) à votre projet de base et utilisez la sondage de balises (configuration / runtime / assemblage / sondage) pour indiquer un chemin de votre DLL. P>
Vous devez copier la DLL ou les DLL sur ce chemin et y ajouter une référence dans votre projet. Dans les propriétés de référence, mettez "Copier local" sur "False". P>