0

我的网络应用程序上有一个文件夹,用于存储用户上传的内容,即个人资料图片等。

当我使用 WebDeploy 时,有一个“保留额外文件(请勿删除)”选项,勾选后可确保不删除个人资料图片。

我正在寻找一种方法来确保即使没有勾选,某个文件夹也不会被删除。这样做的原因是我不希望其他开发人员将来意外禁用该功能。或者我。

有任何想法吗?我在这里看到了一些类似的问题,但似乎与我正在使用的 Visual Studio 2010 无关。

4

2 回答 2

3

(我假设您正在使用带有 Azure SDK 或 Visual Studio 2012 RTM 的 Visual Studio 2010 发布配置文件。如果不是,请创建一个ProjectName.wpp.targets在项目根目录中调用的 MSBuild 文件并将内容放入其中)

您可以通过在发布配置文件中进行设置来禁用所有形式的删除<SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>(相当于您提到的复选框)。

要跳过特定目录,对此问题的评论意味着您可以使用以下语法:

<ItemGroup>
  <ExcludeFoldersFromDeployment Include="FolderName" />
</ItemGroup>

但我以前从未见过,也没有测试过。否则,您可以指定显式跳过规则。“FolderName”在这里被跳过 - 请记住这AbsolutePath是一个正则表达式:

<MsDeploySkipRules Include="SkipFolderName">
  <SkipAction>Delete</SkipAction>
  <ObjectName>dirPath</ObjectName>
  <AbsolutePath>FolderName$</AbsolutePath>
</MsDeploySkipRules>

注意:某些情况下,使用 Visual Studio 时跳过规则不起作用,除非您也设置UseMsDeployExetrue

于 2012-11-23T05:02:33.190 回答
2

您可以使用 msdeploy.exe.configsettings 文件在目标计算机上设置特定规则,同一文件夹中还有一个 msdeploy.exe.configsettings.example 文件。该文件位于 %program files%\IIS\Microsoft Web Deploy - 文件夹参见Web Deploy Rules

您可以在此处设置 Rules 和 skipDirectives 并启用它们是否为默认值,以便获得预期的默认行为。

于 2012-11-21T17:08:11.603 回答