【问题标题】:Skip rule is not working跳过规则不起作用
【发布时间】:2015-10-15 07:27:15
【问题描述】:

我已经根据这个post编辑了我的csproj文件,但是App_data中多余的文件无论如何都会被删除。 另一方面,当我如帖子中所示修改 msdeploy 命令时,将应用跳过。

我正在使用网络部署 v3。命令是

msdeploy.exe" -verb:sync -source:package=c:\builds\app.zip -dest:auto -setParam:"IIS Web Application Name"="Default Web Site/app"

是否可以调试导致这种行为的原因?

  <PropertyGroup>    <OnBeforePackageUsingManifest>AddCustomSkipRules</OnBeforePackageUsingManifest>
  </PropertyGroup>

<Target Name="AddCustomSkipRules">
    <ItemGroup>
      <MsDeploySkipRules Include="SkipDeleteAppData">
        <SkipAction>Delete</SkipAction>
        <ObjectName>filePath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
      <MsDeploySkipRules Include="SkipDeleteAppData">
        <SkipAction>Delete</SkipAction>
        <ObjectName>dirPath</ObjectName>
        <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data\\.*</AbsolutePath>
        <XPath>
        </XPath>
      </MsDeploySkipRules>
    </ItemGroup>
  </Target>

【问题讨论】:

    标签: .net msbuild msdeploy


    【解决方案1】:

    我一直在查看 Microsoft.Web.Publishing.targets,看起来这已经实现了,您需要做的就是将此属性添加到您的 MsBuild 脚本中:

    <PropertyGroup>
        <SkipApp_DataFolder>True</SkipApp_DataFolder>
    </PropertyGroup>
    

    如果您从 msbuild 命令行运行,您可以使用:

    msbuild MyProject.csproj /p:SkipApp_DataFolder=True ...

    更新:

    你可能想试试这个,把这段代码放在你的 MsBuild 文件的底部,在任何“导入”标签之后:

      <Target Name="GenerateSkipRuleForAppData">
        <EscapeTextForRegularExpressions Text="$(_PackageTempDir)">
          <Output TaskParameter="Result" PropertyName="_Escaped_PackageTempDir" />
        </EscapeTextForRegularExpressions>
        <ItemGroup>
          <MsDeploySkipRules Include="SkipAddDataOnDeploy">
            <SkipAction></SkipAction>
            <ObjectName>dirPath</ObjectName>
            <AbsolutePath>$(_Escaped_PackageTempDir)\\App_Data$</AbsolutePath>
            <XPath></XPath>
          </MsDeploySkipRules>
        </ItemGroup>
      </Target>
    

    这是来自 Microsoft.Web.Publishing.targets 的“GenerateSkipRuleForAppData”目标的精确副本,没有条件(似乎条件无法正常工作),这将覆盖原始目标,并且应该强制它在没有条件的情况下执行打破目标的逻辑。

    【讨论】:

    • 不,它不起作用。这些文件从 IIS 中的应用程序导入时的 App_data 中删除。
    • 我什至在构建输出中发现 SkipApp_DataFolder = True
    猜你喜欢
    • 2022-01-13
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多