Wann wird MSBuild-Satz $(ProjectName) - Eigenschaft?

Ich bin Recht neu auf MSBuild, und ich habe getan, einige Anpassungen an einem Wpf-Projekt-Datei, die ich Baue beide in VS2010 und TFS2010. Ich habe benutzerdefinierte die output-Pfad wie folgt:

<OutputPath Condition=" '$(TeamBuildOutDir)' == '' ">$(SolutionDir)build\binaries\$(ProjectName)\$(Configuration)\$(Platform)</OutputPath>
<OutputPath Condition=" '$(TeamBuildOutDir)' != '' ">$(TeamBuildOutDir)binaries\$(ProjectName)\$(Configuration)\$(Platform)</OutputPath>

Dies ermöglicht es mir zu bauen, um ein zentralisiertes Verzeichnis binaries, wenn Gebäude auf dem desktop, und ermöglicht TFS zu finden, die binaries als CI-builds ausgeführt werden.

Jedoch, es scheint, dass in beiden Fällen die $(ProjectDir) Eigenschaft ist die Feststellung, " im Erstellungsvorgang, der schafft seltsame Ergebnisse. Dabei einige debugging, es scheint, als ob $(ProjectName) wird durch die Zeit BeforeBuild führt, aber dass meine OutputPath-Eigenschaft wertet es vor diesem Punkt.

<ProjectNameUsedTooEarly Condition=" '$(ProjectName)' == '' ">true</ProjectNameUsedTooEarly>

Den obigen Eigenschaft ist in der gleichen property group als meine OutputPath-Eigenschaft. In der BeforeBuild target, $(ProjectNameUsedTooEarly) zu true ausgewertet, aber $(ProjectName) " ergibt den Namen des Projekts als normale durch diesen Punkt.

Was kann ich tun, um sicherzustellen, dass $(ProjectName) hat einen Wert, wenn ich es verwenden?

edit: ich habe gerade verwendet Attrice ist MSBuild-Sidekick zum Debuggen durch meine build-Datei, und in der ersten Ziel steht für breakpoint (_CheckForInvalidConfigurationAndplatform) alle die Eigenschaften zu sein scheinen, bereits festgelegt. Projektname ist bereits richtig eingestellt, aber mein OutputPath-Eigenschaft bereits festgelegt wurde, mit der blank-Wert von ProjectName.

InformationsquelleAutor der Frage bwerks | 2010-04-15

Schreibe einen Kommentar