Comment ajouter un manifeste a.NET exécutable?
Comment puis-je ajouter un manifeste d'assemblage à mon exécutable .NET?
un manifeste d'assemblage est un fichier XML qui est ajouté à un exécutable portable (PE) avec le type de ressource RT_MANIFEST
(24).
les manifestes D'assemblage sont utilisés pour déclarer un certain nombre de choses au sujet de l'exécutable, par exemple:
-
si je veux désactiver DPI-scaling parce que je suis un bon développeur:
<!-- We are high-dpi aware on Windows Vista --> <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application>
-
je peux déclarer que j'ai été conçu et testé sur Windows 7, et je dois continuer à dépendre de tous les bogues dans Windows 7
<!-- We were designed and tested on Windows 7 --> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!--The ID below indicates application support for Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> </application> </compatibility>
-
je peux déclarer que je suis un bon développeur, et que je n'ai pas besoin de la virtualisation des fichiers et des registres
<!-- Disable file and registry virtualization --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo>
-
je peux déclarer que je dépends d'une version particulière 6 de la Microsoft Common Controls library:
<!-- Dependency on Common Controls version 6 --> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency>
-
je peux déclarer que je dépends d'une version particulière de GDI+:
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.GdiPlus" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency>
dans les vieux jours , nous créerions un script de ressource fichier ( *.rc
), par exemple:
wumpa.rc
1 24 AssemblyManifest.xml
ajoute Ce fichier au projet, et le compilateur compilera le fichier .rc
; incluant les ressources dans l'image finale exécutable.
Comment puis-je ajouter un script ressource à un projet dans Visual Studio 2010?
comment ajouter un manifeste d'assemblée à un projet en Visual Studio 2010?
Note : toute solution doit fonctionner dans un environnement avec un contrôle source et plusieurs développeurs (par exemple des chemins codés en dur vers des binaires probablement non installés casseront la construction et ne fonctionneront pas).
Chatter Bonus
- VS2010/.NET: comment intégrer une ressource dans un exécutable. net?
- VS2005: Comment faire intégrer un manifeste dans une assemblée: laissez-moi compter les voies... (Impossible à faire)
mise à jour : Michael Fox suggère que la boîte de dialogue Propriétés du projet peut être utilisée pour inclure un manifeste d'assemblage, mais il n'indique pas où :
mise à jour : les Choses que j'ai essayé:
- à partir de l'écran Propriétés du projet, sélectionnez Application . Sélectionnez l'option radio icône et manifeste . Sous manifeste laisser l'option par défaut de
Embed manifest with default settings
:
ne fonctionne pas parce qu'il intègre un manifeste avec les paramètres par défaut , plutôt que mes paramètres.
-
sous manifeste , remplacer l'option combo par
Create application without a manifest
:ne fonctionne pas parce qu'il ne contient pas de manifeste
-
Sous Ressources sélectionnez le fichier de ressources option radio:
ne fonctionne pas parce que vous ne pouvez pas sélectionner un manifeste d'assemblage (ou un script de ressources qui inclut un manifeste d'assemblage)
-
sous ressources , sélectionnez le fichier de ressources option radio, puis chemin vers un fichier XML de manifeste d'assemblage:
ne fonctionne pas parce que Visual Studio s'étouffe lorsqu'il est présenté avec un manifeste d'assemblage :
- sous ressources , sélectionnez le Fichier de ressources option radio, puis entrer le chemin vers un fichier de script de ressources:
Ne fonctionne pas parce que Visual Studio étouffe lorsqu'ils sont présentés avec un script de ressources :
-
ajouter le
AssemblyManifest.xml
au mon projet, puis le chercher dans le manifeste boîte combo:ne fonctionne pas parce que le fichier du Manifeste D'assemblage n'est pas répertorié comme une option
j'ai une douzaine d'autres choses que je peux garder screenshotting (ajouter un .fichier rc de la solution, cherchez dans la liste déroulante, sélectionnez "pas de manifeste" et de modifier le
wumpa.rc
construire l'action à diverses choses, construire le.rc
fichier en utilisant un compilateur de ressources séparé, soit manuellement, ou une étape pré-construction/msbuild, et sélectionnez que.res
fichier comme ma ressource). je vais arrêter d'ajouter plus de volume à ma question et espérer une réponse.
3 réponses
si vous voulez ajouter des informations personnalisées au manifeste de votre application, vous pouvez suivre ces étapes:
- faites un clic droit sur le projet dans L'Explorateur de solutions.
- Cliquez Sur"Ajouter Un Nouvel Élément".
- Sélectionner"Application Manifest File".
ceci ajoute un fichier nommé app.manifest
à votre projet, que vous pouvez ouvrir et modifier comme désiré.
étapes similaires, avec captures d'écran, levées de déclarant les Applications gérées en tant que DPI-Aware sur MSDN:
-
dans la Solution Explorer, droit-cliquez sur votre projet, pointez vers ajouter , puis cliquez sur nouvel article .
-
dans le Ajouter un nouvel article boîte de dialogue, Sélectionner Fichier , puis cliquez sur Ajouter . App.le fichier manifeste apparaît.
-
copiez et collez le texte suivant dans app.manifeste fichier et puis enregistrer.
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <!-- Disable file and registry virtualization. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> <!-- <requestedExecutionLevel level="asInvoker" uiAccess="false" /> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> --> </requestedPrivileges> </security> </trustInfo> <!-- We are high-dpi aware on Windows Vista --> <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application> <!-- Declare that we were designed to work with Windows Vista and Windows 7--> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!--The ID below indicates application support for Windows Vista --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!--The ID below indicates application support for Windows 7 --> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> </application> </compatibility> <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </asmv1:assembly>
-
dans la Solution Explorer, droit-cliquez sur le projet , puis cliquez sur Propriétés pour vérifier que le app.le manifeste est utilisé.
-
votre demande est maintenant manifeste comme étant "conçu pour Windows", et est
- désactive la virtualisation des fichiers et des registres
- annule DWM scaling of applications
- annonce que vous avez été conçu et testé sur Windows 7 et Windows Vista
- prend une dépendance de la bibliothèque des contrôles communs version 6 (permettant l'utilisation de styles visuels par les contrôles communs)
J'ai Visual Studio 2010 Professional avec Service Pack 1 installé. Je cours sur Windows 7 Ultimate 64-bit. Si je suis ces instructions, les propriétés du projet montre "manifeste intégré avec les paramètres par défaut" dans le bloc de ressources, et aussi l'option est désactivée! Quand je construis, le manifeste ne s'incruste pas dans la DLL comme je l'ai vérifié en ouvrant la DLL dans la vue de ressource.
toutefois, si I:
- Localisez l'application ajoutée.fichier manifeste dans la Solution Explorer
- clic droit et choisir des propriétés
- Changement de l'Action de Construire de la propriété de "nul" à "Ressource Incorporée"
- reconstruire
le fichier de manifeste est intégré correctement, ce que je peux vérifier en chargeant la DLL dans la vue de ressource. Le Manifeste paramètre dans les propriétés de l'Application apparaît toujours comme "Embed manifeste par défaut les paramètres" et est toujours désactivé.
dans Visual Studio 2008, cela peut être fait dans la fenêtre des propriétés du projet. Je suis presque sûr que c'est la même chose en 2010. Clic droit sur votre projet, sélectionnez propriétés, et dans l'onglet application, vous pouvez sélectionner un manifeste. Vous devez l'ajouter à votre projet, mais vous pouvez le faire facilement en ajoutant un fichier existant.