msbuild命令行是否有whatif开关?

msbuild命令行是否有whatif开关?,msbuild,Msbuild,我的生成服务器上运行了一个msbuild命令行。它在构建后使用开关部署/p:DeployOnBuild=true 部署时是否有类似whatif的开关用于msbuild?有几种方法可以在连续集成中实现该问题 自定义MSBuild任务 您可以创建自己的任务来实现该接口。您可以从helper类派生任务并重写其Execute()方法。这个解决方案是最灵活的。所以,可以将其他参数从命令行传递到开发进程,或者根据构建配置对其进行硬编码 然后将任务添加到项目中: <Project xmlns="http

我的生成服务器上运行了一个msbuild命令行。它在构建后使用开关部署
/p:DeployOnBuild=true


部署时是否有类似
whatif
的开关用于msbuild

有几种方法可以在连续集成中实现该问题

自定义MSBuild任务 您可以创建自己的任务来实现该接口。您可以从helper类派生任务并重写其
Execute()
方法。这个解决方案是最灵活的。所以,可以将其他参数从命令行传递到开发进程,或者根据构建配置对其进行硬编码

然后将任务添加到项目中:

<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>
第一个命令构建web应用程序项目并创建本地web部署包。注意,它需要解决方案文件中的本地包发布配置文件

第二行使用
–whatif
标志调用
msdeploy.exe
。也可以直接使用
msdeploy.exe
。要获取详细信息,请参阅

自动化Web包部署 前面的方法可以使用MSBuild的任务实现自动化。比如说

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
<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>

T
Y
http://my-server.loc
“path\to\MyProject.deploy.cmd”/$(DeployMode)/M:$(DestinationServer)/MsDeployAgentService/A:NTLM

您还可以通过
msbuild
命令
/p:
开关传递
DeployMode
DestinationServer
的值。

请澄清您的问题。你所说的like
whatif
是什么意思?@Alexander msdeploy.exe-你想得到一份部署包的报告,而不是部署包的报告吗?投票结束“不清楚你在问什么”,请陈述你的期望或描述你正在/想要解决的问题。@Alexander是,我想要包部署的报告。msdeploy具有whatif开关,因此它将在实际部署之前模拟部署。在使用/p:DeployOnBuild=true时,我似乎找不到类似的msbuild功能