我正在尝试使用WebDeploy使用自定义MSDeploy跳过规则和Visual Studio 2012中保存的发布配置文件来发布网站.
我从命令行使用发布配置文件,但跳过删除文件夹的跳过规则不起作用.
我的ErrorLog网络应用程序中有一个子文件夹,web.config里面有一个文件来设置正确的文件夹权限.没有任何跳过规则,ErrorLog文件夹和web.config文件将正常发布,但服务器上文件夹中的所有现有错误日志文件将在发布时删除.
错误 <SkipAction>Delete</SkipAction>
当我向我的wpp.targets文件添加自定义跳过规则时,跳过规则不再接受该<SkipAction>元素的值.如果我设置<SkipAction>Delete</SkipAction>,我收到以下错误:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377,5): error : Web deployment task failed. (Unrecognized skip directive 'skipaction'. Must be one of the following: "objectName," "keyAttribute," "absolutePath," "xPath," "attributes.<name>.") [C:\inetpub\wwwroot\My.Website\My.Website\My.Website.csproj]
Run Code Online (Sandbox Code Playgroud)
如果我只是省略该<SkipAction>元素,ErrorLog则在正常发布时删除该文件夹.
如果我<SkipAction></SkipAction>再次设置,ErrorLog则在发布时删除该文件夹.
如果我设置<KeyAttribute>Delete</KeyAttribute>,然后ErrorLog和web.config文件通常刊载.
我的理解是,为了使用自定义跳过规则,您需要从命令行调用MSBuild而不是从VS 2012中发布.但是,我仍然想使用我保存的发布配置文件,我知道现在可以使用VS 2012.
我的MSBuild命令行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
Run Code Online (Sandbox Code Playgroud)
My.Website.wpp.targets:
<?xml version="1.0" encoding="utf-8" ?> …Run Code Online (Sandbox Code Playgroud) 我将我的ASP.NET MVC应用程序托管为Azure云服务.
在新部署后,我在删除用户上传的图片时遇到问题.
上传的图片将保存到自定义特殊文件夹中 WebProject/UserFiles/MedicalCenterImages
下面我提供了我的项目文件夹结构.

我发现并调查了几个与我相关的问题
并且弄清楚,我应该在.csproj文件上添加一个SkipDelete规则.
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipUserFilesFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>UserFiles</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
但我不完全明白我应该编辑哪个文件?(MaxPatient.Web.csproj或MaxPatientCloudService.ccproj或任何其他文件)
我总是发布我的MaxPatientCloudService项目.
我将不胜感激任何帮助.
谢谢 :)