Duas perguntas Eventos Visual Studio-construção Correios e MSBuild
-
23-08-2019 - |
Pergunta
Eu tenho duas perguntas re:. Visual studio 2008 e pós-compilação eventos
1) Como faço para listar dinamicamente o caminho completo MSBuild.exe, a ser chamado pelo evento pós-compilação? Atualmente, eu tenho o seguinte (que funciona muito bem, btw): -
C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe
"$(ProjectDir)MSBuild\MSBuildSettings.xml"
.. mas isso só funcionaria se u ter um ambiente x64 bit. Existe uma maneira de usar algum construído em configuração mágica? por exemplo. $(MsBuildPath)msbuild.exe "blah....xml"
??
2) Minha tarefa msbuild faz algumas coisas, em seguida, gera um arquivo txt como a saída. I definir o caminho de saída no arquivo msbuild xml como tal ..
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<UsingTask TaskName="CustomTask" AssemblyFile="MyAssembly.dll"/>
<Target>
<CustomTask
...
OutputFile="Foo.txt"
/>
<Target>
</Project>
Como posso passar na pasta de saída real para o arquivo msbuild? Eu tentei ...
OutputFile="$(OutDir)Foo.txt"
mas que falhou: (
Felicidades!
Atualização # 1 - Resposta à segunda questão ..
Eu descobri uma maneira de responder à segunda questão - não tenho certeza se é o melhor embora .. por isso estou aberto a outras idéias:)
mudanças de arquivo XML :: adicionar um grupo de propriedades que define o nome da variável interna Se nenhum argumento externas foram passados ??para o MSBuild.exe executável.
<PropertyGroup>
<OutputFile Condition=" '$(OutputFile)'=='' ">
..\SomeFolder\Foo.txt</OutputFile>
</PropertyGroup>
<Target>
<CustomTask
...
OutputFile="$(OutputFile)"
/>
<Target>
</Project>
Agora, chamar o executável msbuild como ...
msbuild.exe "C:\Temp Foo\Blah\MsbuildSettings" /p:OutputFile="C:\Folder 1\Folder 2\blah\"
e que as obras:)
Solução
Para a pergunta 1, propriedade de uso MSBuildBinPath
Para a pergunta 2, propriedade de uso OutputPath (projectos C # ou VB)
OutputFile="$(OutputPath)Foo.txt"
Outras dicas
Você poderia colocar sua tarefa personalizada dentro do VBPROJ ( csproj Se é ac # projeto) de arquivo e, em seguida, ter o uso evento pós-compilação das variáveis ??MSBuild VS-definidos . Estou pensando desse processo fora do topo da minha cabeça, então paciência comigo sobre isso, lol.
- No Visual Studio, descarregar o projeto que você deseja ter o evento pós-compilação com, e em seguida, clique com o botão direito no nó do projeto descarregado e selecione 'Editar ...'.
- Coloque o UsingTask no topo, assim como o que você tem.
- recarregar o projeto, e abrir as propriedades do projeto e vá para editar o evento pós-compilação lá.
- Você deve ser capaz de acessar todas essas variáveis ??bacana agora, e adicioná-los à sua tarefa personalizada.
Os arquivos de projeto são scripts MSBuild em si, permitindo-lhe fazer todos os tipos de truques MSBuild scripts bacana.
Edit:. Desculpe, eu não tenho uma resposta para a primeira pergunta que você fez