我们有一个现有的Php应用程序,我希望将其集成到我的非常简单的MS Build过程中。目前,我们正在使用Visual Studio 2013和Visual Studio Online(TFService)和Git来控制各种C ++,C#和这个Php Web应用程序(所有这些都在不同的Git存储库中)。
要在VS2013中开发我们的Php代码,我们使用Devsense的Php扩展(http://www.devsense.com/products/php-tools)。这非常棒,但本身并不支持自动构建。
有没有人为Php设置自动构建?第一个目标是让构建过程将一个zip文件传送到云端,可以由Web头下载。我希望不的zip文件包含解决方案和项目文件,而是仅包含我们在Web头上需要的文件。
目前,如果我创造一个开箱即用的简单" hello world"项目使用Devsense模板并将其放在VS Online上自己的Git存储库中,构建因以下错误而中断。
1个错误,0个警告 C:\ a \ src \ PhpTest.sln - 1个错误,0个警告,查看日志文件 C:\ a \ src \ MyPhpSite \ MyPhpSite.phpproj:目标" Build"在项目中不存在。 编译C:\ a \ src \ PhpTest.sln 没有测试结果 没有代码覆盖率结果
思想?
答案 0 :(得分:2)
这需要编辑您的phpproj文件和MSBUILD的一些知识。
为了编辑您的phpproj文件:
在文件末尾,输入以下内容以拉入“Build”目标:
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
由于我不确定您打算如何使用zip文件,我假设您只是想从Visual Studio Online下载它。
添加内联任务以压缩文件。
<UsingTask TaskName="Zip" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFileFolder ParameterType="System.String" Required="true" />
<OutputFileName ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.IO.Compression" />
<Using Namespace="System.IO.Compression" />
<Code Type="Fragment" Language="cs">
<![CDATA[
ZipFile.CreateFromDirectory(InputFolderName, OutputFileName);
]]>
</Code>
</Task>
</UsingTask>
设置以下PropertyGroup和ItemGroup
<PropertyGroup>
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Payload Include="$(OutputPath)$(Name)" />
</ItemGroup>
设置以下目标,最后一个是将文件移动到一个位置然后将其拉上的目标。
<Target Name="CreateManifestResourceNames" />
<Target Name="CoreCompile" />
<Target Name="CopyFilesToOutputDirectory">
<MakeDir Directories="$(OutputPath)$(Name)" />
<Copy SourceFiles="@(Compile)" DestinationFiles="$(OutputPath)$(Name)\%(Identity)" />
<Copy SourceFiles="@(Content)" DestinationFiles="$(OutputPath)$(Name)\%(Identity)" />
<Zip InputFolderName="@Payload" OutputFileName="$(OutputPath)$(Name).zip/>
</Target>
空白目标是为了防止MSBuild抛出错误。
这将使您获得以zip文件结尾的成功构建。