最终的可重用解决方案如下。
回顾:
我有一个根文件夹谁的目录和项目文件的名称都被命名为网站的价值的几个地点。我希望能够从命令行发布所有网站(或选定的列表) - 运行脚本。这些网站将被发布到我的IIS服务器目录。
首先,创建一个MSBuild的脚本,需要在网站名称的参数:
<?xml version="1.0" encoding="utf-8" ?>
<Project DefaultTargets="Compile,Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name ="DeleteFiles">
<Delete Files="..\$(ProjectName)\$(ProjectName)\obj\debug\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\obj\release\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\bin\$(ProjectName).dll"></Delete>
<Delete Files="..\$(ProjectName)\$(ProjectName)\bin\$(ProjectName).pdb"></Delete>
</Target>
<Target Name="Compile" DependsOnTargets="DeleteFiles">
<MSBuild Projects="..\$(ProjectName)\$(ProjectName)\$(ProjectName).csproj"
Targets="Clean;Build"
Properties="OutputPath=..\$(ProjectName)\bin"/>
</Target>
<Target Name="Deploy" DependsOnTargets="Compile">
<MSBuild Projects="..\$(ProjectName)\$(ProjectName)\$(ProjectName).csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="OutDir=C:\inetpub\wwwroot\$(ProjectName)\bin\;WebProjectOutputDir=C:\inetpub\wwwroot\$(ProjectName)" />
</Target>
</Project>
接下来,创建每行一个网站名称的文本文件。这可以通过执行“dir> sites.txt”然后列编辑出多余的内容来轻松生成。
即。
最后,创建一个包含在sites.txt遍历列表的批处理文件,并执行脚本的MSBuild:
@echo --------------------------------------------
@echo -- Iterating through list in sites.txt --
@echo --------------------------------------------
for /f %%X in (sites.txt) do msbuild build.xml /p:ProjectName="%%X" /v:n
该解决方案驻留在目录上的同一水平其余的网站来自根目录,这就是为什么构建脚本中的“.. \ $(ProjectName)”。
发布一堆网站的好方法,并希望这可以帮助某人。
您是否考虑过创建解决方案? MSBuild也知道如何构建它们。 – 2011-12-15 17:57:52
这让我走上了另一条轨道......我会检查出来的,谢谢。 – ElHaix 2011-12-16 17:34:26