2010-07-07 39 views
1

Maintenant que le code natif peut avoir des assemblys (par exemple "unmanaged assembly") pour l'utilisation du cache côte à côte, je suis intéressé à changer le version d'une DLL après sa construction (dans le cadre d'un schéma de versionnement automatique de construction incrémentielle). Je pense que je suis proche en utilisant ce commmand:Utilisez l'outil Manifest (mt.exe) pour modifier la "version" de "Unmanaged Assembly"

mt -updateresource:MyNewlyBuiltThing.dll;#2 -identity:"MyNewlyBuiltThing, version=5.5.0.1"

Cette commande me donne l'erreur suivante:

mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "MyNewlyBuiltThing.dll". Access is denied.

Cette commande est exécutée à partir d'une invite de commandes avec des privilèges d'administrateur, et je n'avoir aucun logiciel anti-virus sur ma boîte de développement (et le fichier n'a pas de drapeau en lecture seule).

Le problème est peut-être que j'utilise un mauvais nom dans la chaîne d'identité. Après tout, quand je charge la ressource incorporée du binaire dans Visual Studio, il montre un manifeste qui ne prend pas la peine de mentionner son nom - il mentionne seulement les noms des dépendances.

Quoi qu'il en soit, je me demandais juste si le mt.exe pouvait être amené à me donner la version après construction d'un assemblage non géré. Un aperçu de ce que je fais mal? Et si ce n'est pas possible, pourquoi?

Répondre

1

Si des problèmes d'autorisations ont été exclues:

Êtes-vous en cours d'exécution sur un système de fichiers FAT? Il peut y avoir des problèmes sinon sur NTFS. En outre, plusieurs problèmes de ce type sont allés avec le dernier mt.exe, une partie du "Microsoft Windows SDK for Windows 7 and .NET Framework 4", version 7.1 afin que vous puissiez essayer cela.