Frage

Ich habe zwei Fragen wieder. Visual Studio 2008 und Post-Build-Ereignisse

1) Wie kann ich dynamisch Liste der msbuild.exe vollständigen Pfad, um durch die Post-Build-Ereignis aufgerufen werden? Derzeit habe ich folgendes (die schön funktioniert, btw): -

C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe 
    "$(ProjectDir)MSBuild\MSBuildSettings.xml"

.. aber das würde nur funktionieren, wenn u eine x64-Bit-Umgebung. Gibt es eine Möglichkeit, einige in der Magie Einstellung gebaut zu benutzen? z.B. $(MsBuildPath)msbuild.exe "blah....xml" ??

2) Meine msbuild Aufgabe hat einige Sachen dann eine txt-Datei als Ausgabe erzeugt. Ich definiere den Ausgabepfad in der msbuild XML-Datei als solche ..

<?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>

Wie kann ich in der realen Ausgabeordner übergeben, an die msbuild-Datei? Ich habe versucht ...

OutputFile="$(OutDir)Foo.txt"

, aber das schlug fehl: (

Cheers!

Update # 1 - Antwort auf die zweite Frage ..

Ich habe einen Weg gefunden, die zweite Frage zu beantworten - nicht sicher, ob es die besten .. obwohl ist so ich bin offen für andere Ideen:)

XML-Datei Änderungen :: fügen Sie eine Eigenschaftsgruppe, die den internen Variablennamen setzt, wenn kein außerhalbes Argument an die msbuild.exe ausführbaren Datei übergeben wurde.

             

    <PropertyGroup>
        <OutputFile Condition=" '$(OutputFile)'=='' ">
            ..\SomeFolder\Foo.txt</OutputFile>
    </PropertyGroup>

    <Target>
        <CustomTask
           ...
           OutputFile="$(OutputFile)"
        />
    <Target>
</Project>

Nun rufen die msbuild ausführbare wie ...

msbuild.exe "C:\Temp Foo\Blah\MsbuildSettings" /p:OutputFile="C:\Folder 1\Folder 2\blah\"

und das funktioniert:)

War es hilfreich?

Lösung

Für die Frage 1 verwenden Eigenschaft MSBuildBinPath

Frage 2 verwenden Eigenschaft OutputPath (C # oder VB-Projekte)

OutputFile="$(OutputPath)Foo.txt"

Andere Tipps

Sie können Ihre individuelle Aufgabe innerhalb der setzen vbproj ( csproj , wenn es ac # -Projekt ist) Datei und dann haben die Post-Build-Ereignis, um die VS-definierten MSBuild Variablen verwenden . Ich bin weg von der Oberseite meines Kopfes dieses Prozesses zu denken, so mit mir tragen dazu, lol.

  1. Sie in Visual Studio entladen das Projekt wollen Sie mit dem Post-Build-Ereignis haben, und dann mit der rechten Maustaste auf den unbelasteten Projektknoten und wählen Sie ‚Bearbeiten ...‘.
  2. Legen Sie die Usingtask an der Spitze, wie, was Sie haben.
  3. Laden Sie das Projekt, und öffnen Sie die Projekteigenschaften und gehen, um die Post-Build-Event dort zu bearbeiten.
  4. Sie sollten in der Lage sein, all diese raffinierten Variablen jetzt zugreifen zu können, und fügen Sie sie zu Ihrer benutzerdefinierten Aufgabe.

Projektdateien sind MSBuild Scripts in sich, so dass Sie alle Arten von geschickten MSBuild scripting Tricks tun.

Edit:. Sorry, ich habe keine Antwort auf die erste Frage haben Sie gefragt,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top