2009-05-07 5 views
1

J'ai la configuration suivante non standard (VS2008, .NET 3.5 SP1):problème Tricky avec ASP.NET Web Forms ressources et la localisation

Il y a un projet Web principal appelé Mainsite et il y a plusieurs « plug-in » projets web avec des noms différents. Lors de la construction de ces plugins, j'ai une étape de construction personnalisée qui appelle aspnet_compiler.exe et aspnet_merge.exe. Cela entraîne deux fichiers .DLL - nom_plug .dll et nom_plug _deploy.dll. Le premier contient les classes codebehind, le second contient le code généré à partir de fichiers .ascx.

Ces plugins .DLL sont ensuite copiés dans le dossier /MainSite/bin/Plugins/. Lors de l'exécution (démarrage de l'application), l'application MainSite recherche dans ce dossier et charge dynamiquement tous les fichiers .DLL.

Tous mes formulaires sont dans les plugins, dans des fichiers .ascx. L'application principale est juste un squelette qui charge ces usercontrols .ascx au besoin.

Et maintenant vient le besoin de localisation. Idéalement, je voudrais avoir les éléments suivants:

  • Lors de ressources dans Visual Studio, il devrait y avoir un fichier de ressources distinct pour chaque forme (fichier .ascx) de sorte qu'il est plus facile de localiser les formulaires parallèle.
  • La méthode meta:resourcekey dans les fichiers .ascx est très confortable pour localiser les contrôles;
  • Le mécanisme de repli de langage/culture de ressource automatique dans .NET devrait être utilisable; Le résultat de la compilation doit être tel que les fichiers de tous les plugins puissent être copiés dans le dossier /MainSite/bin/Plugins/. S'il y a un fichier .DLL pour chaque langue/culture et qu'ils doivent être placés dans des sous-dossiers spécifiques - c'est bien tant que les fichiers .DLL de différents plugins n'ont pas de noms en conflit.

Des idées sur comment y parvenir?

Répondre

1

Apparemment, il est possible d'implémenter des fournisseurs de ressources personnalisés dans .NET. Here est un article qui contient des liens vers divers autres articles qui expliquent l'ensemble du processus. En effet, vous prenez la valeur de meta:resourcekey et obtenez la valeur d'où vous voulez. L'article ci-dessus, par exemple, stocke toutes les informations de localisation dans une base de données.

Questions connexes