最终的、可重复使用的解决方案如下。
回顾:
我在根文件夹中有几个站点,它们的目录和项目文件名都被命名为网站的值。我希望能够从命令行发布所有站点(或选定列表) - 运行脚本。然后将网站发布到我的 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”然后列编辑多余内容来轻松生成。
IE。
site1.com
site2.com
site3.com
site4.com
最后,创建一个遍历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)”的原因。
发布一堆网站的好方法,希望这对某人有所帮助。