Вот 3 цели, которые полезны.
Где, конечно, я используюAmI, когда пытаюсь выяснить мой текущий каталог.
Остальные также информативны. (Некоторые выходят за рамки вопроса).
<Target Name="WhereAmI">
<Message Text=" Here I Am " />
<Exec Command="dir ." />
<Message Text=" " />
</Target>
<Target Name="ShowReservedProperties" AfterTargets="BeforeBuild">
<Message Text=" MSBuildProjectDirectory = $(MSBuildProjectDirectory)" Importance="high" />
<Message Text=" MSBuildProjectFile = $(MSBuildProjectFile)" Importance="high" />
<Message Text=" MSBuildProjectExtension = $(MSBuildProjectExtension)" Importance="high" />
<Message Text=" MSBuildProjectFullPath = $(MSBuildProjectFullPath)" Importance="high" />
<Message Text=" MSBuildProjectName = $(MSBuildProjectName)" Importance="high" />
<Message Text=" MSBuildBinPath = $(MSBuildBinPath)" Importance="high" />
<Message Text=" MSBuildProjectDefaultTargets = $(MSBuildProjectDefaultTargets)" Importance="high" />
<Message Text=" MSBuildExtensionsPath = $(MSBuildExtensionsPath)" Importance="high" />
<Message Text=" MSBuildStartupDirectory = $(MSBuildStartupDirectory)" Importance="high"/>
</Target>
<Target Name="ShowOtherProperties">
<Message Text=" " />
<Message Text=" " />
<Message Text=" Environment (SET) Variables* " />
<Message Text=" --------------------------- " />
<Message Text=" COMPUTERNAME = *$(COMPUTERNAME)* " />
<Message Text=" USERDNSDOMAIN = *$(USERDNSDOMAIN)* " />
<Message Text=" USERDOMAIN = *$(USERDOMAIN)* " />
<Message Text=" USERNAME = *$(USERNAME)* " />
</Target>
Если вы используете «внешний файл msbuild» и вам необходимо передать имя файла или путь к нему (поскольку внешние файлы msbuild не любят относительные файлы, если они не находятся в той же папке, что и вызывающий файл .msbuild). ... вот удобное (на 3,5 и выше, мне кажется) задание.
<ConvertToAbsolutePath Paths="..\"> <!-- Some relative path here -->
<Output TaskParameter="AbsolutePaths" PropertyName="MyAbsolutionPathProperty"/>
</ConvertToAbsolutePath>
<Message Text="'MyAbsolutionPathProperty' = '$(MyAbsolutionPathProperty)'" />