.net - 跳过规则不起作用

标签 .net msbuild msdeploy

我已经根据此 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>

最佳答案

我一直在查看 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”目标的精确副本,没有条件(似乎条件无法正常工作),这将覆盖原始目标并应强制执行它,而无需打破目标的逻辑。

关于.net - 跳过规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33142393/

相关文章:

.net - 定义具有解决方案范围的.NET扩展方法

c# - 这里用checked有什么意义

c# - 添加重复数字时,哪个数字字典集合会重新排序项目?

visual-studio - Visual Studio 是否在内部使用 MSBuild,确切的命令是什么?

c# - 如何使用 MSBuild 注册一个 dll

c# - Windows 窗体 C# 面板不应有白色背景,并且面板应仅为图像

asp.net - 在开发周期中监控或加速 ASP.NET 编译的提示

MsDeploy.exe ERROR_FILE_IN_USE 错误 - 八达通部署

msdeploy - TFS部署错误目标无法访问

.net - 创建 clickonce webdeploy 包