2008-09-19 12 views
0

J'ai beaucoup d'assemblys/projets dans la même solution C# /. Net. Un paramètre doit être enregistré par des personnes utilisant l'interface graphique de l'application Web, puis une application de console et certains projets de test doivent accéder au même fichier. Où dois-je mettre le fichier et comment y accéder?Laisser plusieurs assemblées accéder au même fichier texte

J'ai essayé d'utiliser "AppDomain.CurrentDomain.BaseDirectory" mais cela finit par être différent pour mes assemblys. De plus, le fichier "System.Reflection.Assembly.Get * Assembly.Location" ne me donne pas ce dont j'ai besoin.

Peut-être que ce n'est pas quelque chose que je devrais mais dans un fichier, mais plutôt la base de données? Mais c'est tellement compliqué de le faire pour quelques lignes de configuration.

+0

Les assemblages sont-ils tous dans le même répertoire? Sinon, rien de moins que d'avoir un fichier de configuration pour chaque assembly pointant vers le fichier de configuration principal va être utile –

+0

Je me demande si vous allez rencontrer des problèmes de verrouillage ... avec plusieurs applications essayant d'écrire le même fichier . – Vaibhav

+0

Vaibhav: Un seul des assemblages écrira jamais dans le fichier. –

Répondre

1

Personnellement, je tirerais parti de la base de données, car l'alternative est soit un mal de tête de configuration ou est plus de mal que ça vaut la peine.

Vous pouvez configurer chaque application pour pointer vers le même fichier, mais cela devient problématique si vous souhaitez déplacer le fichier. Ou vous pouvez écrire un service pour gérer le fichier et l'exposer aux clients, mais à ce stade, vous pouvez également utiliser la base de données.

0

Vous pensiez à le stocker dans le registre ou dans le stockage isolé? Vous ne savez pas si plusieurs applications peuvent partager le stockage isolé ou non.

+0

Pas vraiment, ils doivent être déployés en utilisant ClickOnce pour cela, comme il semble. –

+0

Qu'en est-il du Registre? – Vaibhav

+0

Je ne sais pas. Il semble plus logique et sûr de le mettre dans une base de données par rapport au registre. Ou? –

3

Placez le fichier dans

Path.Combine(
     Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), 
     "[Company Name]\[Application Suite]"); 
0

projets peuvent avoir des événements de construction - pourquoi ne pas ajouter un événement post-build pour copier le fichier à tous les emplacements requis?