VS .Net: Опубликовать события сборки для «Первичного вывода из <myProject>» в проекте установщика - PullRequest
5 голосов
/ 01 апреля 2009

Я использую следующие действия после сборки в проекте, чтобы объединить библиотеку с моим приложением:

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

Это отлично работает. Теперь у меня есть проект установщика и добавлен вывод проекта. Я ожидал бы, что используется «Первичный вывод из», то есть exe в / bin / Release. Но на самом деле вместо /bin/release/myApp.exe используется /obj/release/myApp.exe.

Кто-нибудь знает, могу ли я изменить это поведение и использовать вывод в / bin / release для проекта установщика? Благодарю.

Ответы [ 3 ]

2 голосов
/ 05 апреля 2011

Я решаю проблему, примените Ilmerge в папке / obj, это моя конфигурация событий после сборки:

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

1 голос
/ 09 мая 2009

Кажется, нет реального решения этой проблемы, но существует обходной путь. Я создал тикет в Microsoft connect: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=428898

Microsoft ответ:

Привет

Чтобы выполнить эти действия после сборки, вам нужно будет поместить их в пакетный файл, а затем добавить команду подходящего для вызова пакетного файла в диалоге событий после сборки. Я вижу, что в сценарии есть несколько экземпляров со ссылками на ряд переменных Visual Studio. Поскольку мы не предоставляем эти переменные в качестве переменных среды, вам придется передавать их как параметры в пакетный файл.

Надеюсь, это поможет!

Candy Chiang Менеджер программ - Visual Studio

1 голос
/ 01 апреля 2009

Я поместил файлы явно, что означает, что вместо того, чтобы указывать проекту установки использовать простой контент, он явно помещает файл .exe / .dll.
Это работает довольно хорошо, я могу контролировать, какой файл будет входить, и относительные пути пользователя проекта установки, чтобы проект установки мог использоваться на других машинах.

...