web-dev-qa-db-fra.com

Puis-je définir LARGEADDRESSAWARE depuis Visual Studio?

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 :(

63
Michael Stum

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.

49
Yi Zhao

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.

97
Michael

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>

14
Kirill Osenkov