2010-09-09 3 views
1

Existe-t-il un moyen d'insérer une ressource dans le manifeste d'un autre assembly?Injection de ressources dans le manifeste d'un assembly .NET post-build

J'ai expérimenté avec MSBuild et ILMerge mais apparemment un assembly de ressources créé par le Linker d'assemblage ne peut pas être fusionné avec ILMerge, ressemble à ILMerge ne peut pas fusionner une ressource.

al /out:Resources.dll /embed:Test.txt,Resources.Test 

ILMerge donne juste une erreur

ILMerge.Merge: Could not load assembly from the location 'Resources.dll' 

Répondre

2

D'accord, j'ai eu la réponse, ma version ILMerge doit avoir été voiturette ...

Je pris le dossier du modèle de classe C# et compilé que de la manière la plus simple

> csc /target:library Class1.cs 

Je puis utiliser la partie Assembly Linker du Windo ws SDK pour créer un ensemble de ressources trivial (plus rapide)

> al /out:TextFile1.dll /embed:TextFile1.txt 

Cette dernière partie a échoué avec une stupide exception de référence null, la dernière fois que j'ai essayé cela. Mais maintenant, cela a fonctionné comme un charme.

> ilmerge /out:Merged.dll Class1.dll TextFile1.dll 

Vous pouvez vérifier le résultat en utilisant ildasm

> ildasm /text Merged.dll 
... 
.mresource public TextFile1.txt 
{ 
    // Offset: 0x00000000 Length: 0x00000003 
} 

... et c'est tout!

Je l'utilise pour injecter des données dans des assemblages après la construction dans le cadre du processus de construction. par exemple. Informations de journal SVN. Alors que je peux suivre un binaire à une révision spécifique et une personne.

Questions connexes