如何在.csproj文件中设置MSDeploy设置

14

有没有一种方法可以在ASP.NET MVC项目的.csproj文件中设置MSDeploy参数? 特别是“跳过”参数,应该跳过“Temp”文件夹。

-skip:objectName=dirPath,absolutePath="\\temp"

...或者我如何将此参数传递到MSBuild.exe参数列表中?


你的目标是如何定义的?你是否明确运行了msbuild.exe? - sll
MSBuild.exe由TFS Build服务器执行,其参数类似于:/p:DeployOnBuild=true;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSVC;MsDeployServiceUrl=... - Grief Coder
你能否显式地添加一个参数,例如 msbuild.exe /p:absolutePath="\temp"? - sll
1
我不这么认为,因为absolutePath是-skip参数的一个值,应该传递给msdeploy.exe。 - Grief Coder
1
当我尝试这样做时,构建过程中出现了“未识别的跳过指令'skipaction'。”的错误。我错过了什么? - Paul Smith
1个回答

11

在项目文件中定义<MsDeploySkipRules>,例如:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OnBeforePackageUsingManifest>AddSkipRules</OnBeforePackageUsingManifest>
  </PropertyGroup>
  <Target Name="AddSkipRules">
    <ItemGroup>
      <MsDeploySkipRules Include="SkipTempDirOnDeploy">
        <SkipAction></SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\Temp$</AbsolutePath>
        <XPath></XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>
</Project>

9
为使其在通过 Visual Studio 的 "发布" 功能部署期间正常工作,必须使用 AfterAddIisSettingAndFileContentsToSourceManifest 而不是 OnBeforePackageUsingManifest。请参见评论 http://blog.alanta.nl/2011/02/web-deploy-customizing-deployment.html?showComment=1314013105475#c1406362862563428999 - Anthony Serdyukov
4
当我尝试这样做时,构建出现了“未识别的跳过指令'skipaction'”错误。我错过了什么? - Paul Smith
3
我认为应该是 "<SkipAction>Delete</SkipAction>"。 - Brian Schroer
我尝试了"<SkipAction>Delete</SkipAction>",但它也不起作用。我不得不完全删除SkipAction元素。同时感谢Anthony Serdyukov的评论,非常有用。 - Augusto Barreto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接