Вопрос

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

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 в /бин /релиз. Но на самом деле вместо /бин/release/myapp.exe, /obj/release/myapp.exe используется.

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

Это было полезно?

Решение 3

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

Microsofts anwser:

Привет,

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

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

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

Другие советы

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

Скопируйте $ (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/.dll.
Это работает довольно хорошо, я получаю контроль, какой файл будет введен и относительные пути пользователя проекта настройки, чтобы проект настроек можно было использовать на других машинах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top