2010-02-12 21 views
11

J'utilise Visual Studio 2008 et j'ai une solution qui contient plusieurs projets. J'ai 1 snk pour signer mes assemblées et cela vit dans un dossier de solution.Plusieurs projets doivent utiliser 1 fichier SNK

J'ai lié le snk à chacun de mes projets mais maintenant quand je tente de signer mon projet avec ce snk lié je ne peux pas trouver le fichier snk avec le dialogue de fichier.

Ai-je raté une étape ici?

Solution 
    > Solution Folder 
     MyKey.snk 
    > Project X 
     > _LinkedFiles 
      MyKey.snk (physical file doesn't appear here but shows in VS) 
     > ... 

Répondre

2

Eh bien, pas beaucoup de réponse ici, mais j'ai trouvé une solution avec laquelle j'étais à l'aise. J'ai un ProductAssemblyInfo qui vit dans un dossier de solution mais est lié à chaque projet comme ci-dessous.

Solution 
    > Build (Solution Folder) 
     MyKey.snk 
     ProductAssemblyInfo.cs 
    > Project X 
     > _LinkedFiles 
      ProductAssemblyInfo.cs 
     > ... 

Le ProductLevelAssembly contient la ligne suivante:

[assembly: AssemblyKeyFile("../../Build/MyKey.snk")] 

De cette façon, le fichier clé ne fait jamais copié dans chaque projet, mais chaque ensemble est toujours signé par la clé.

+1

Le fichier AssemblyKeyFile est obsolète – Nick

0

Ne liez pas, juste en faire des copies. Si vous reconstruisez le SNK, vous devrez le copier à nouveau sur tous les projets, mais la probabilité de devoir le faire est très faible. En fait, nous ne modifions les SNK que lorsque nous modifions les numéros de version principaux.

De même, lorsque vous liez un fichier, vous le liez dans le fichier de solution, sans effectuer de copie qui modifie les deux emplacements à la fois. La boîte de dialogue de navigation va seulement vous montrer les fichiers qui existent sur le disque.

+0

Cette réponse fonctionnera sur le plan technique. Mais rappelez-vous, votre fichier de clé privée (.snk) est comme la chose qui dit "Nous sommes qui nous disons que nous sommes" ...... en avoir des copies pourrait donc être un risque pour la sécurité. Donc, je suis d'accord avec la réponse, mais il s'agit d'un avertissement (IMHO). – granadaCoder