Question

J'utilise le post suivant construire des actions dans un projet, de fusionner une lib dans mon application:

IF $(ConfigurationName) == Debug GOTO end
cp $(TargetPath) $(TargetDir)app_unmerged.exe
del $(TargetPath)
"C:\Program Files\Microsoft\ILMerge\ilmerge.exe" /internalize $(TargetDir)MyApp_unmerged.exe $(TargetDir)someLib.dll /out:$(TargetDir)myApp.exe
del $(TargetDir)myApp_unmerged.exe $(TargetDir)someLib.dll
:end

Cela fonctionne très bien. Maintenant, j'ai un projet d'installation et a ajouté le projet de sortie. Je me attends à ce que la « sortie primaire de » est utilisé, à savoir l'exe dans / bin / Release. Mais en réalité, au lieu de /bin/release/myApp.exe, /obj/release/myApp.exe est utilisé.

Est-ce que quelqu'un sait si je peux changer ce comportement et utiliser la sortie dans / bin / release pour le projet d'installation? Merci.

Était-ce utile?

La solution 3

Il semble qu'il n'y a pas de véritable solution à ce problème, mais une solution existe. J'ai créé un ticket sur Microsoft Connect: https://connect.microsoft. com / VisualStudio / feedback / ViewFeedback.aspx? FeedbackID = 428898

Microsofts anwser:

Salut,

Afin d'exécuter les actions après la construction, vous aurez besoin de les mettre dans un fichier de commandes, puis ajoutez la commande pour appeler le correspond le fichier de commandes dans la boîte de dialogue d'événements post construction. Je vois qu'il ya plusieurs cas dans le script avec des références à un certain nombre de variables Visual Studio. Étant donné que nous ne pas exposer ces variables comme des variables d'environnement, vous devrez les transmettre sous forme de paramètres dans le fichier batch.

J'espère que cela!

Bonbons Chiang Gestionnaire de programme - Visual Studio

Autres conseils

Je résous le problème applique ILMerge dans / obj dossier, ceci est ma configuration de l'événement post-construction:

COPY $ (ProjectDir) obj \ $ (PlatformName) $ \ (ConfigurationName) $ \ (TargetFileName) $ (TargetDir) temp.exe $ (SolutionDir) \ lib \ ILMerge / wildcards / t: exe / out: "$ (ProjectDir) obj \ $ (PlatformName) $ \ (ConfigurationName) $ \ (TargetFileName)" "$ (TargetDir) temp.exe" « $ (TargetDir) log4net.dll » "$ (TargetDir) other.dll" DEL $ (TargetDir) temp.exe

Je mets les fichiers explicitement, ce qui signifie qu'au lieu de dire le projet d'installation d'utiliser le contenu primery, il a mis le .exe / fichier .dll explicitement.
Cela fonctionne assez bien, je peux contrôler quel fichier entreraient et le projet configuration utilisateur des chemins relatifs afin que le projet d'installation peut être utilisé sur d'autres machines.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top