我正在尝试使用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)