2008-09-02 8 views
7

Je travaille sur la localisation d'une application asp.net qui comprend plusieurs projets.Référencement de fichiers de ressources de plusieurs projets dans une solution

Pour cela, certaines chaînes sont utilisées dans plusieurs de ces projets. Naturellement, je préférerais n'avoir qu'une seule copie du fichier de ressources dans chaque projet. Comme les fichiers de ressources n'ont pas d'espace de noms (du moins autant que je sache), ils ne sont pas accessibles comme les classes normales.

Existe-t-il un moyen de référencer des fichiers resx dans un autre projet, au sein d'une même solution?

Répondre

8

Vous pouvez simplement créer un projet de bibliothèque de classes, ajoutez un fichier de ressources là-bas, puis reportez-vous à cette assemblée pour ressources communes.

5

J'ai utilisé cette solution avant de partager un fichier assembly.cs ensemble sur tous les projets dans une solution Je suppose que la même chose fonctionnerait pour un fichier de ressources.

Créez un fichier lié à chaque projet/bibliothèque de classes. Il n'y aura qu'une seule copie et chaque projet aura une référence au code via un fichier lié au moment de la compilation. C'est une solution très élégante pour résoudre les ressources non publiques partagées sans dupliquer le code.

<Compile Include="path to shared file usually relative"> 
    <Link>filename for Visual Studio To Dispaly.resx</Link> 
</Compile> 

ajouter ce code au groupe de l'élément complile d'un fichier csproj remplacez les chemins avec vos chemins réels aux resx et vous Sould pouvoir les ouvrir.

Une fois que vous avez fait pour un fichier de projet, vous devriez être en mesure d'employer la copie & coller le fichier lié à d'autres projets sans avoir à pirater le csproj.

+0

Un bon! J'ai également dû modifier l'action Build du lien de 'Compile' à' Embedded Resource' afin que VS ne tente pas de compiler le XML. – piedar