相关疑难解决方法(0)

在Visual Studio 2012中使用MSBuild PublishProfile时,MSDeploy跳过规则

我正在尝试使用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>,然后ErrorLogweb.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)

msbuild msdeploy visual-studio webdeploy visual-studio-2012

23
推荐指数
2
解决办法
1万
查看次数