J'ai un assemblage .net qui doit être 32 bits et doit être/LARGEADDRESSAWARE.
Je sais comment faire cela avec EditBin, mais je me demande s'il y a un moyen intégré dans Visual Studio 2010? Ou bien, quelqu'un a-t-il écrit une tâche MSBuild pour cela?
Edit: Ceci est pour une application C #, donc aucune option de l'éditeur de liens malheureusement :(
Vous pouvez le faire en tant que tâche post-génération. Dans l'onglet "Build Events", mettez la commande suivante
editbin /largeaddressaware $(TargetPath)
dans la "ligne de commande d'événement post-build:"
C'est le cas pour VS2008. Je pense que cela devrait fonctionner de la même manière pour VS2010.
En s'appuyant sur la réponse de @ RouMao, vous pouvez obtenir un message d'erreur indiquant que editbin est introuvable. Assurez-vous que l'environnement dans la ligne de commande d'événement post-build est correctement configuré en spécifiant comme suit:
call "$(VS100COMNTOOLS)..\tools\vsvars32.bat"
editbin /largeaddressaware $(TargetPath)
Une autre chose à comprendre est que votre application activée pour LARGEADDRESSAWARE
ne fonctionnera pas en mode débogage lorsque (sous l'onglet Debug
dans les propriétés de votre projet) le Enable the Visual Studio hosting process
la case à cocher est cochée (ce qui est par défaut), car le vshost.exe
n'est pas correctement signalé.
Décochez cette case pour déboguer votre application à l'aide de LARGEADDRESSAWARE
.
Il s'agit d'un package NuGet qui peut définir LargeAddressAware sur votre binaire après sa construction: https://github.com/KirillOsenkov/LargeAddressAware
Il ne nécessite pas editbin.exe car il dispose d'une application gérée pour définir l'indicateur par programme: https://github.com/KirillOsenkov/LargeAddressAware/blob/master/SetLargeAddressAware/LargeAddressAware.cs
Mise à jour: Pour l'utiliser, il suffit d'installer le package et d'ajouter cette propriété dans votre .csproj:
<PropertyGroup> <LargeAddressAware>true</LargeAddressAware> </PropertyGroup>