TFS 2010和MSBuild变量是否为空? 我们在PHP中开发Web页面,我们必须使用VisualStudio 2010使用Team Foundation Server 2010。 我们尝试在TFS上创建简单的构建过程,将php文件复制到drop文件夹

TFS 2010和MSBuild变量是否为空? 我们在PHP中开发Web页面,我们必须使用VisualStudio 2010使用Team Foundation Server 2010。 我们尝试在TFS上创建简单的构建过程,将php文件复制到drop文件夹,php,visual-studio-2010,msbuild,Php,Visual Studio 2010,Msbuild,我正在使用:DefaultTemplate.xaml 并使用以下代码为MSBuild进程创建了我自己的:simple_zip.proj: <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <MyS

我正在使用:DefaultTemplate.xaml 并使用以下代码为MSBuild进程创建了我自己的:simple_zip.proj:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <MySourceFiles Include="**\*.php"/>
    </ItemGroup>

    <Target Name="CopyFiles">
        <Copy SourceFiles="@(MySourceFiles)" DestinationFolder="c:\MyProject\Destination" />
        <Message Text="My Build Complete" />
    </Target>
</Project>
这将工作并复制到服务器本地路径

问题是,如果我尝试使用任何MSBuild变量,它都不起作用,如

消息文本=我的构建完成-$BuildDir-$TargetDir-$BuildProjectFolderPath>

显示我的文本,但变量为空。我正在查找msbuild进程的调试级别日志文件

另外,以下链接中的任何内容都不起作用。

因此,我的问题是,如何将所有路径变量sources dir、binaries dir、drop folder dir、build number和其他变量从生成定义/模板获取到TFS服务器上的MSBuild

多谢各位
亲切问候

我没有看到您的项目导入任何标准目标。我在我的一个项目文件中做了类似的事情,它看起来有点像这样:


另一个值得尝试的好方法是在TFS计算机上启用更详细的MSBuild日志记录,如“diag”级别,以便您可以看到MSBuild变量在生成过程中得到设置。

我正在使用调试级别进行MSBuild日志记录,并且没有任何变量。另外,您指定的项目还可以,但我的变量$DeploymentDir等都是简单的空:/此外,$Configuration、$Platform等在我的情况下是空的,尝试发送消息Text=my Configuration-$Configuration,这些变量与所有其他变量一样是空的。我的问题是如何对此进行故障排除,并让它们填充值谢谢,在本例中,当我将$DeploymentDir初始化为$OutDir\MySubFolder\时,$DeploymentDir怎么可能为空?在本例中,当$OutDir不存在时,它至少将为\MySubFolder\。此项目文件是否嵌套在生成工作流中的另一个项目文件下面?i、 您是以递归方式调用MSBuild,还是仅在您维护的TFS生成定义中有一个proj文件列表?最后,还有一件事。您已确认项目文件中有以下行:?此行导入std MSBuild公共目标和属性。在上一篇文章中,您询问了BuildNumber。您应该以与BuildNumber相同的方式通过命令行自行传递所有必需的值
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
 <DeploymentDir>$(OutDir)\MySubFolder\</DeploymentDir>
</PropertyGroup>
<ItemGroup>
 <DeploymentContent Include="**\*.ps1" />
</ItemGroup>
<PropertyGroup>
 <DevDeploymentImageDir>$(DeploymentDir)Dev\</DevDeploymentImageDir>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<!-- Empty targets for this project since it just copies files from one location to another.-->
<Target Name="BeforeBuild"/>
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile" />
<Target Name="AfterBuild" >
  <MakeDir Directories="$(DeploymentDir)" />
  <MakeDir Directories="$(DevDeploymentImageDir)" />
  <Copy SourceFiles="@(DeploymentContent)" DestinationFolder="$(DevDeploymentImageDir)" />
</Target>