我的构建服务器上运行了 msbuild 命令行。它是在使用开关whatif
部署时是否有针对 msbuild 的{{1}}开关?
答案 0 :(得分:0)
有几种方法可以在持续集成中实现该问题。
您可以创建自己的任务来实现ITask
界面。您可以从帮助程序类Task
派生任务并覆盖其Execute()
方法。该解决方案最灵活。因此,可以将其他参数从命令行传递到deploing进程,或者根据构建配置对它们进行硬编码。
然后将任务添加到您的项目中:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Register the custom task -->
<UsingTask TaskName="TaskNamespace.MyTask" AssemblyFile="path\to\task\assembly.dll"/>
<!-- Define something -->
<!-- Set properties for Debug configuration -->
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<WhatIf>true</WhatIf>
<!-- Set another properties -->
</PropertyGroup>
<!-- Set properties for Release configuration -->
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<WhatIf>false</WhatIf>
<!-- Set another properties -->
</PropertyGroup>
<Target Name="MyTarget">
<MyTask OnlyReport="$(WhatIf)"/>
</Target>
</Project>
请参阅Task Writing文章中的详细信息。
可以使用msbuild
构建项目并创建Web包,然后使用msdeploy
或 .deploy.cmd 文件创建包部署的报告。例如
msbuild "MySolution.sln" /t:MyProject /p:Configuration="Release" /p:DeployOnBuild=true /p:PublishProfile="Local Package"
"path\to\MyProject.deploy.cmd" /T /M:"http://my-server.loc/MsDeployAgentService" /A:NTLM -allowUntrusted
第一个命令构建您的Web应用程序项目并创建本地Web部署包。请注意,它需要解决方案文件中的 Local Package 发布配置文件。
第二行使用msdeploy.exe
标记调用–whatif
。也可以直接使用msdeploy.exe
。要获取详细信息,请参阅Deploying Web Packages。
以前的方法可以使用MSBuild的<Exec>
任务自动完成。例如
<PropertyGroup>
<DeployMode>T</DeployMode>
<DeployMode Condition=" '$(Configuration)'=='Release' ">Y</DeployMode>
<DestinationServer>http://my-server.loc</DestinationServer>
</PropertyGroup>
<Target Name="PublishWebPackages">
<PropertyGroup>
<DeployCommand>
"path\to\MyProject.deploy.cmd" /$(DeployMode) /M:$(DestinationServer)/MsDeployAgentService /A:NTLM
</DeployCommand>
</PropertyGroup>
<Exec Command="$(DeployCommand)"/>
</Target>
您还可以通过DeployMode
命令DestinationServer
开关传递msbuild
和/p:
的值。