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:)

Foi útil?

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.

  1. 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 ...'.
  2. Coloque o UsingTask no topo, assim como o que você tem.
  3. recarregar o projeto, e abrir as propriedades do projeto e vá para editar o evento pós-compilação lá.
  4. 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

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