用于跳过目录的MSbuild命令行参数

用于跳过目录的MSbuild命令行参数,msbuild,teamcity,msdeploy,Msbuild,Teamcity,Msdeploy,我在TeamCity中有以下用于部署的命令行参数。一切正常,但我想在部署时跳过一些目录。如何在TeamCity中的以下msbuild脚本中添加该逻辑 /P:Configuration=%env.Configuration% /P:DeployOnBuild=True /P:DeployTarget=MSDeployPublish /P:MsDeployServiceUrl=https://%env.TargetServer%/MsDeploy.axd /P:AllowUntrustedCerti

我在TeamCity中有以下用于部署的命令行参数。一切正常,但我想在部署时跳过一些目录。如何在TeamCity中的以下msbuild脚本中添加该逻辑

/P:Configuration=%env.Configuration%
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl=https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate=True
/P:MSDeployPublishMethod=WMSvc
/P:CreatePackageOnPublish=True
/P:SkipExtraFilesOnServer=True
/P:UserName=xxxxx
/P:Password=xxxxx

不能通过命令行指定WPP跳过规则,因为它们被声明为项,而不是属性

以下是在
pubxml
(或
wpp.targets
)中声明跳过规则的语法:


删除
文件路径
错误日志

事实上,我已经在我的项目中实现了这一点,如下所示:

<ItemGroup>
        <MsDeploySkipRules Include="SkipDeleteApp_Data_Import">
            <SkipAction></SkipAction>
            <ObjectName>dirPath</ObjectName>
            <AbsolutePath>$(_Escaped_WPPAllFilesInSingleFolder)\\App_Data\\Import</AbsolutePath>
        </MsDeploySkipRules>
    </ItemGroup>
    <ItemGroup>
        <MsDeploySkipRules Include="SkipDeleteApp_Data_File">
            <SkipAction></SkipAction>
            <ObjectName>filePath</ObjectName>
            <AbsolutePath>$(_Escaped_WPPAllFilesInSingleFolder)\\App_Data\\en-US-custom.txt</AbsolutePath>
        </MsDeploySkipRules>
    </ItemGroup>

肮脏的
$(\u转义\u wppallfilesinglefolder)\\App\u Data\\Import
文件路径
$(\u转义\u wppallfilesinglefolder)\\App\u Data\\en-US-custom.txt

我也在做同样的事情。我不喜欢修改我的.csproj文件,所以我尝试了这个。到目前为止,它对我有效。在我的例子中,我从部署中排除了媒体、App_Data\Logs和App_Data\preview文件夹,而不是Data文件夹

基本上,您可以将ExcludeFoldersFromDeployment作为参数传递给MSBuild。将其与SkipExtraFilesOnServer相结合就可以实现这一点

/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=OurDevWebServer/msdeployagentservice
/p:AllowUntrustedCertificate=True
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=umbraco_TestSite
/p:IgnoreDeployManagedRuntimeVersion=True
/p:SkipExtraFilesOnServer=True
/p:ExcludeFoldersFromDeployment="media;App_Data\Logs;App_Data\preview"
/p:IncludeSetAclProviderOnDestination=False
/p:AuthType=NTML /p:UserName=

谢谢你的回复。我将尝试让您知道我在wpp.targets中添加了您的代码,并从TeamCity运行上述命令,但结果相同,它不会跳过文件夹名称数据。当我尝试从vs 2012运行时,会出现以下错误MSDEPLOY(0,0):错误:无法识别的参数“Web”。所有参数都必须以“-”开头。Richard感谢您的帮助,我找到了另一个选择,我在.csproj文件数据中添加了以下代码,它对me@user1200750-您应该将其添加为单独的答案,并将其标记为正确。我有一个后续问题:在VST中构建VS时,如何跳过目录?
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=OurDevWebServer/msdeployagentservice
/p:AllowUntrustedCertificate=True
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=umbraco_TestSite
/p:IgnoreDeployManagedRuntimeVersion=True
/p:SkipExtraFilesOnServer=True
/p:ExcludeFoldersFromDeployment="media;App_Data\Logs;App_Data\preview"
/p:IncludeSetAclProviderOnDestination=False
/p:AuthType=NTML /p:UserName=