Pergunta

Eu gostaria de implementar um evento pós compilação que executa as seguintes ações

  1. Uma cópia caminho relativo da saída DLL (1 arquivo, e não todo o jazz depuração)
  2. A registrar o DLL saída para GAC ??

Como isso é feito?

Foi útil?

Solução

O que você quer?

copy $(TargetPath) $(TargetDir)..\..\someFolder\myoutput.dll
regasm $(TargetPath) 

(que entrou em campo para a etapa pós-compilação sob propriedades do projeto)

Outras dicas

Entre seguinte no "Projeto Propriedades-> Construir Eventos-> eventos de compilação posto de comando linha:"

xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"

ou adicione o seguinte trecho de projeto (por exemplo csproj) arquivo

<PropertyGroup>
    <PostBuildEvent>xcopy "$(TargetPath)" "target path" /Y && regasm "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>

Note que é recomendado para adicionar "" em torno copiar argumentos de comando a problemas evitar com caminhos contendo espaços em branco. Observe também que vários comandos podem ser combinados usando &&

Você tem certeza que quer fazer isso como parte de uma compilação? Eu recomendaria usar referências do projeto em soluções ao invés do GAC se você pode evitá-lo. Cópia de arquivos é uma coisa, mas registrar no GAC é bastante intrusiva e você pode querer considerar os outros ambientes de seu código é compilado. Coisas como máquinas de outros desenvolvedores, e ambientes de teste / servidores de compilação etc. Se você tem um servidor de compilação realmente você deve estar usando algo como NAnt com algum tipo de servidor de integração contínua.

Eu tive que mesmo problema e eu me esforcei um pouco para torná-lo funciona.

No meu caso, eu queria fazer o contrário que está copiando o dll SDL em minha pasta de saída.

copy "$(SolutionDir)SDL\lib\x86\SDL.dll" "$(SolutionDir)$(Configuration)\"

Note que, $(Configuration) será sua pasta de saída (por exemplo Debug ou Release).

As citações era o que estava faltando, aparentemente você precisa deles quando a mão final do lado direito com uma \. Assim, pode ser mais seguro para sempre usá-los.

A esperança de salvar alguém a 5 minutos!

P.S. Eu uso o Visual Studio 2010

Você pode querer olhar para MS Build. É o que usamos aqui no trabalho.

CodeProject Fazer a ligação & MSDN Ref

Para a etapa 2 na pergunta que parecem preferir o seguinte:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil" /f /i $(TargetPath)

Nota: isto requer a Windows SDK para ser instalado em sua máquina de desenvolvimento.

Mais informações sobre as macros disponíveis, tais quanto $ (TargetPath), no MSDN.

Ran em um problema relacionado. As respostas aqui ajudou (obrigado!).

O meu cenário estava em depurar um aplicativo MEF-suficientes eu precisava ter as DLLs relacionados em um determinado local. Corri para problema com substituindo a compilação anterior assim como necessidade de adicionar uma exclusão para o script.

delete $(SolutionDir)FileService\$(ProjectName).dll
copy $(TargetPath) $(SolutionDir)FileService\$(ProjectName).dll

Espero que ajude alguém, também!

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