Comment puis-je compiler mon Application.config dans mon fichier exe dans un VS2010 C# console application?
Je suis de la création d'une application console dans Visual Studio 2010 avec c#. Je veux cette appli pour être autonome, en ce sens que tous vous avez besoin est le fichier exe, et vous pouvez l'exécuter à partir de n'importe où. Je tiens également à utiliser app.config pour stocker des chaînes de connexion et ainsi de suite.
Mon problème est que je n'arrive pas à comprendre comment inclure cette application.config des données dans le fichier exe compilé. Je vois qu'il crée appname.exe.config, mais je ne veux pas que les gens aient à se soucier de l'accaparement des deux fichiers distincts lorsqu'ils reçoivent de l'application.
Aucun des recherches sur google je l'ai fait a trouver quoi que ce soit. Est-ce même possible?
- Autant que je sache, il n'existe aucun moyen d'inclure le fichier de configuration dans le fichier exe. Si la configuration est simple, vous pouvez simplement le stocker dans un fichier de votre propre et de créer ce fichier sur le premier run, avec les paramètres par défaut. Une autre option est également le registre de windows, mais ensuite, vous avez à courir élevée dans Vista ou au-dessus (ce qui en soi n'est pas difficile)
- double possible de Fichier de Configuration en tant que Ressource Incorporée
- Réfléchir un peu. Si c'était possible, l'utilisateur ne pouvait pas modifier la chaîne de connexion plus. Vaincre le point d'en avoir un. Un seul fichier est jamais un problème, il est appelé setup.exe
- Re: double, Que l'on n'est pas venu dans ma recherche. Ce qui est dommage car il a répondu à ma question. Bien que j'ai à dire, le codage en dur des paramètres de l'application, par opposition à une pratique de fichier de config me laisse insatisfaite.. Je suppose que c'est le programmeur web en moi.
- Passant: je ne veux que mes utilisateurs de modifier la chaîne de connexion je ne veux d'avoir à installer quoi que ce soit. Oserais-je le dire-j'ai juste envie de travailler. 😀
- Eh bien, difficile de code de la chaîne de connexion dans votre code.
- Le problème, c'est des choses comme WCF sont conçus autour du fichier de configuration, il est possible de les configurer dans le code, mais toujours moins documenté et le plus compliqué à faire. XML en lui-même est préférable à la mise en place de configs que C# est, donc ça serait sympa si vous pouviez configurer WCF dans l'application.config, mais il a incorporé si vous n'avez pas besoin de l'utilisateur de toujours changer ces configs.
- La recherche de cette question renvoie un grand nombre de "espèce d'idiot, vous ne voulez pas le faire", alors qu'en réalité "oui, je veux le faire parce que ma configuration WCF est plus facile dans l'app.config et je ne veux pas que l'utilisateur de le changer". Aussi, sur un ordinateur de l'utilisateur, ils se cachent connu des extensions de fichier, afin qu'ils voient "appname.exe" et double-cliquez sur elle, mais c'est VRAIMENT appname.exe.config avec l'extension caché. Si vous l'installer et de mettre un raccourci sur le bureau, ce n'est pas un problème, mais ai-je vraiment besoin de créer un programme d'installation pour tous les jeter programme je veux donner à quelqu'un juste pour éviter cela?
- La WCF a au moins une option de configuration dans le code, mais certaines assemblées dépendantes ou même .net framework choses nécessitent des entrées dans l'application de config ... je n'ai pas d'option pour modifier ce comportement, et l'utilisateur n'a pas besoin de changer ces valeurs, ... de sorte qu'il n'est pas "Stupide" de vouloir en quelque sorte incorporer l'application de config
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. La moitié de la point de ces fichiers de configuration est de permettre des modifications à la configuration de l'application en dehors de l'application elle-même.
Il vous suffit de modifier votre programme de sorte qu'il n'avait pas une dépendance sur l'app fichier de config -- meilleure façon de le faire serait de simplement s'en tenir aux valeurs à l'intérieur de votre config en lecture seule des variables globales.
.config
. C'est tout simplement stupide.useLegacyJit
parce que vous avez le code comme ceci qui à ce jour se bloque sur Win10 en raison d'un RyuJIT bug. Le travail est inaccessible pour les programmes que voulez livrées en un seul fichier exe, et ce n'est pas de réglage de l'utilisateur dans tous les sens.Je peux voir où vous allez avec cette, mais la réponse risque d'être un peu plus compliqué que vous avez été recherchez.
De cette façon, vous avez quelques raisonnable par défaut que vous n'avez pas à maintenir séparé de vous app.config comme des constantes, vous pouvez exécuter votre application en tant que juste un exe, et vous pouvez encore la modifier à l'exécution, par l'ajout de retour dans l'app.config.
La seule chose à retenir, c'est que la lecture dans l'application.config à partir d'une ressource ne vous donnera pas le même comportement que la normale app.config. Vous êtes essentiellement de la lecture et de l'utiliser à la main.
Vous dire que vous devez l'ajouter à l'exe en tant que ressource? Eh bien, tout d'abord vous ne pouvez pas, app.la config est basé sur fichier pas de ressource.
Sur l'autre main, le seul point de fichier de config, c'est que vous pouvez le changer. Sinon, il suffit de coder en dur ou utiliser des constantes.
Comme d'autres l'ont souligné, l'idée d'un fichier de configuration est d'éviter les valeurs codées en dur.
Ce que vous pourriez faire comme une alternative est d'écrire une section de configuration personnalisée, avec tous les éléments en option et avec des valeurs par défaut. De cette façon, n'importe qui peut obtenir par avec les valeurs par défaut n'a pas besoin d'un fichier de config. Mais s'ils ont besoin de remplacer une valeur par défaut, ils peuvent fournir une.
(Désolé, juste un peu de remue-méninges. Je n'ai pas d'exemple.)
En général, vous ne voulez pas que votre application.config fournit un mécanisme par lequel la configuration peut être effectuée au moment de l'exécution. Aussi loin que vous le objectif spécifique (maintien de la configuration à l'extérieur de votre code, mais il a de suivre le binaire), vous avez deux options:
Je suis sûr qu'il existe d'autres, plus créatifs, les options disponibles. Ma recommandation serait pour la deuxième option. Lorsque l'application est lancé pour la première fois, de créer les clés nécessaires et de définir leurs valeurs par défaut à partir de l'exécutable. De cette façon, si vous avez besoin de faire du débogage à une date ultérieure, vous pouvez simplement exécuter regedit et apportez les modifications nécessaires, sans recompilation.
Meilleure solution ressemble à créer vous-même au démarrage de l'application.
Exemple de code:
Rappelez-vous qu'il ne pourra le faire que votre config actuelle lors de la construction. Il ne sera pas mise à jour automatiquement lorsque vous déployez une nouvelle version. Il comprendra la config comme lors de la construction. Mais cela pourrait être suffisant 🙂
Veuillez la première réponse sur ce post précédent - Fichier de Configuration en tant que Ressource Incorporée
Comme les gens disent, ici, le point de l'ensemble d'un fichier de config est pour la modification de certains paramètres de l'extérieur de l'application. Vous pouvez coder en dur ou utiliser des constantes, mais vous pouvez également utiliser le registre de windows si vous le souhaitez. De cette façon, vous pouvez apporter des modifications à la demande et toujours dans un seul fichier exe.
Le projet de code a quelques bonnes infos sur la lecture, l'écriture et la suppression de la base de registre.
http://www.codeproject.com/KB/system/modifyregistry.aspx
Mais attention lors de la modification du registre. Beaucoup de demandes sont en fonction sur de sorte que vous pourriez détruire certains paramètres si vous faites quelque chose de mal. Je recommande de le lire et ensuite de faire.
Bien sûr, cela ne fonctionne que sur Windows. Je suppose que vous êtes à l'aide de Visual Studio alors vous êtes probablement à l'aide de Windows.
Amusez-vous bien et bonne chance!
IL de Fusion a beaucoup de problème avec wpf exécutable aussi lent.
J'ai fini par utiliser Cosura.Fody https://github.com/Fody/Costura et à l'aide de paramètres de ligne de commande pour passer le reste de ma config app valeur.
Aussi à l'aide de iexpress http://en.wikipedia.org/wiki/IExpress pour créer exécutable final avec la ligne de commande args et exe fusionnés
Prendre une application winform par exemple, lors de la compilation, un fichier " xxx.EXE.config' sera généré avec la sortie de fichier EXE. Il contiendra l'application.config' paramètres. Distribuer ce ainsi.