令人惊讶的是,Visual Studio 2012 的答案不在这里:
对于 Web 应用程序和网站,您可以编辑 .pubxml 文件!
您可以按照我的回答或尝试我稍后找到的本指南:http:
//www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-iis-and-skip-deleting-it-with-msdeployskiprules.html#sthash.MSsQD8U1.dpbs
是的,您不仅可以为网站项目执行此操作,还可以为网站执行此操作。我在互联网上花了很长时间寻找 Visual Studio 网站(不是网站项目)的这种难以捉摸的排除功能,之前得出的结论是不可能的,但看起来是这样的:
在您的 [mypublishwebsitename].pubxml 文件中,在 ~/Properties/PublishProfiles 中找到 Web 应用程序项目和 ~/App_Data/PublishProfiles 中的网站,只需添加:
<ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment>
<PropertyGroup>
作为.pubxml 文件中主要元素的子元素。除非您键入特定的构建类型,例如发布或调试,否则无需添加新元素。
可是等等!!!
如果您在发布配置中使用以下设置从目标/目标服务器中删除文件:
然后,Web 发布过程将在您的源/目标服务器上删除任何排除在外的内容,例如您在<ExcludeFoldersFromDeployment>
和<ExcludeFilesFromDeployment>
!
MsDeploy 跳过规则来救援:
首先,Web Publish 使用 MSBuild 以外的东西来发布(称为 Task IO 或类似的东西),但它有一个错误并且无法识别跳过规则,因此您必须添加到您的 .pubxml:
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
</PropertyGroup>
我会保留<WebPublishMethod>
它自己的<PropertyGroup>
,你会认为你可以在你的 .pubxml 中只有一个元素,但是我的跳过规则直到我移动到它自己的元素<PropertyGroup>
才被调用。是的,很疯狂,但是您需要为 Web Publish 执行所有这些操作以排除并且不删除服务器上的文件夹/文件这一事实很疯狂。<WebPublishMethod>
<PropertyGroup>
现在我的 .pubxml 中的实际 SkipRules、ExcludeFolders 和 ExcludeFiles 声明:
<ExcludeFoldersFromDeployment>Config</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Photos</ExcludeFoldersFromDeployment>
<ExcludeFoldersFromDeployment>Temp</ExcludeFoldersFromDeployment>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
现在跳过规则(<Target>
是您的.pubxml 中的一个子<Project>
项):(您可以将<SkipAction>
所有操作留空以跳过,但我没有对此进行测试并且不确定。
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipConfigFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipPhotosFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Photos</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Web\.config</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
<MsDeploySkipRules Include="SkipWebConfig">
<SkipAction>Delete</SkipAction>
<ObjectName>dirPath</ObjectName>
<AbsolutePath>$(_DestinationContentPath)\\Temp</AbsolutePath>
<XPath>
</XPath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
并且请不要忘记.
使用反斜杠转义 filePath Skip 规则。