2008-12-11 4 views
2

J'ai une solution bibliothèque UserControl qui a les éléments suivantsfichier Config C#

UserControl --- UserControl projet

---UserControl Test Project 

dans mon projet de test, je suis en mesure d'ajouter mon usercontrol à l'outil boîte. Quand je le fais glisser et le dépose dans mes formulaires, il échoue. J'ai mis en notation et ai découvert que mon usercontrol lit un fichier de configuration. Le fichier de configuration est marqué pour toujours copier et existe dans le répertoire obj \ debug et le répertoire bin \ debug /.

Cependant quand je fais glisser le usercontrol à une forme sur mon projet de test, il tente d'obtenir un fichier de

C: \ Documents and Settings \ jondoe \ Local Settings \ Application Data \ Microsoft \ VisualStudio \ 8.0 \ ProjectAssemblies \ vqjlihdl01

ce qui précède est un résultat de cette

string pluginAssemblyPath = Assembly.GetExecutingAssembly().Location; 
      DirectoryInfo dirInfo = new DirectoryInfo(pluginAssemblyPath); 
      pluginAssemblyPath = pluginAssemblyPath.Replace(dirInfo.Name.ToString(),""); 
      string configFilePath = pluginAssemblyPath + "FileConfig.xml"; 

j'aurais pensé que si je compile en mode débogage, le fichier doit être sous obj \ debug et qui devrait être mon chemin de montage. qu'est-ce qui donne ou existe-t-il un réglage que je dois faire pour le faire fonctionner correctement afin qu'il puisse trouver mon fichier de configuration au bon endroit?

Répondre

0

Avez-vous besoin du fichier de configuration lors de la conception? Sinon, vous pouvez changer votre code pour tester si elle est en cours d'exécution au moment de la conception, quelque chose comme:

if (this.Site != null && this.Site.DesignMode) 
{ 
    ... design time behavior 
} 
else 
{ 
    ... runtime behavior (read config file) 
} 
0

Votre contrôle utilisateur a vraiment besoin de lire un fichier de configuration? L'un des principaux avantages de faire contrôler un projet par un utilisateur est que vous pouvez le réutiliser dans plusieurs autres projets. Si votre contrôle utilisateur doit lire un fichier de configuration, cela rend la réutilisation plus difficile et compliquée (comme vous l'avez vu). Si vous n'avez pas réellement besoin d'utiliser le contrôle dans plusieurs projets, la solution la plus rapide à votre problème actuel pourrait être d'incorporer le contrôle utilisateur dans votre projet principal (ne le conservez pas comme un projet séparé) .

0

Je dois utiliser mon contrôle dans divers projets et j'ai donc utilisé le fichier de configuration pour modifier les paramètres en fonction du projet.

Je n'ai pas vu ce problème avec d'autres projets où j'ai travaillé de la même manière. il utilisait toujours le chemin obj \ debug pour construire le chemin d'exécution de l'assembly

+0

Normalement, vous mettriez cela dans les commentaires sous ma réponse (je suppose que vous répondiez à moi). Les réponses sont pour, bien, des réponses. :-) – MusiGenesis

1

Attention, j'ai trouvé que la propriété DesignMode n'est pas fiable là où vous avez un contrôle sur un autre contrôle sur un formulaire (disons). Cela ne semble fonctionner que pour les contrôles placés directement sur la surface de conception.

+0

+1 Intéressant. Je vais devoir essayer ça. – MusiGenesis

+0

bien, laissez-moi savoir si vous l'obtenez au travail! – kpollock

Questions connexes