我的网络应用程序上有一个文件夹,用于存储用户上传的内容,即个人资料图片等。
当我使用 WebDeploy 时,有一个“保留额外文件(请勿删除)”选项,勾选后可确保不删除个人资料图片。
我正在寻找一种方法来确保即使没有勾选,某个文件夹也不会被删除。这样做的原因是我不希望其他开发人员将来意外禁用该功能。或者我。
有任何想法吗?我在这里看到了一些类似的问题,但似乎与我正在使用的 Visual Studio 2010 无关。
(我假设您正在使用带有 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 时跳过规则不起作用,除非您也设置UseMsDeployExe
为true
您可以使用 msdeploy.exe.configsettings 文件在目标计算机上设置特定规则,同一文件夹中还有一个 msdeploy.exe.configsettings.example 文件。该文件位于 %program files%\IIS\Microsoft Web Deploy - 文件夹参见Web Deploy Rules
您可以在此处设置 Rules 和 skipDirectives 并启用它们是否为默认值,以便获得预期的默认行为。