Pergunta

Eu estou usando o seguinte post construir ações em um projeto, para mesclar uma lib em meu aplicativo:

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

Isso funciona bem.Agora eu tenho um projecto de programa de instalação e adicionado a Saída do Projeto.Eu seria de esperar que a "Saída Principal de" é usado, por exemplo,o exe /bin/Release .Mas, na verdade, em vez de /bin/release/myApp.exe , /obj/release/myApp.exe é usada.

Alguém sabe se eu posso mudar este comportamento e utilizar a saída no /bin/release para o projecto de programa de instalação?Obrigado.

Foi útil?

Solução 3

Parece que não há solução real para esse problema, mas existe uma solução.Eu criei um ticket no Microsoft connect: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=428898

Microsofts responde:

Olá,

Para executar essas post construir ações, você precisa colocá-los em um arquivo em lotes e, em seguida, adicione o adequado de comando para chamar o arquivo em lotes no evento pós-compilação de diálogo.Vejo que há vários casos em que o script com referências a um número de Visual Studio variáveis.Desde que não exponha as variáveis como variáveis de ambiente, você vai ter que passá-los como parâmetros para o arquivo em lotes.

Espero que ajude!

Doces Chiang Gestor De Programas Do Visual Studio

Outras dicas

Eu resolvo o problema Aplicar a pasta Ilmerge na /Obj, esta é a minha configuração de evento pós-compra:

Copie $ (ProjectDir) obj $ (plataformName) $ (ConfigurationName) $ (TargetFileName) $ (TargetDir) temp.exe $ (solução) lib ilmerge /Wildcards /t: exe /out: "$ (ProjectDir) obj $ (plataformName) $ (configurationName) $ (TargetFileName) "" $ (TargetDir) temp.exe "" $ (TargetDir) log4net.dll "" $ (Targetdir) outros.dll "del $ (TargetDir) temp .exe

Coloquei os arquivos explicitamente, o que significa que, em vez de dizer ao projeto de configuração para usar o Conteúdo do Primery, ele colocou o arquivo .exe/.dll explicitamente.
Isso funciona muito bem, eu controla qual arquivo inseriria e os caminhos relativos do usuário do projeto de configuração, para que o projeto de configuração possa ser usado em outras máquinas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top