0

我正在将我的 ASP.NET-MVC3 应用程序部署到 IIS7 服务器。

如果我选中“在目标上保留额外文件(不要删除)”,则发布到网络工作正常。

如果未选中该复选框,它通常会失败并出现以下错误:

错误 65 Web 部署任务失败。((2013.07.10. 17:06:09)在远程计算机上处​​理请求时出错。)

(2013.07.10. 17:06:09) 在远程计算机上处​​理请求时出错。

处理“App_tracelog.svclog”上的“删除文件”操作时遇到错误。

错误代码为 0x80070020。

该进程无法访问“D:\WebSites\app\Admin\App_tracelog.svclog”,因为它正被另一个进程使用。0 0 管理应用

显然跟踪日志不能被删除,因为它当前是由应用程序编写的。

我不想将服务器上的所有文件都留在部署中,所以我首先认为关闭、部署和打开应用程序将是一个很好的解决方案。它可以工作,但我无法自动完成(按发布时)。(有办法吗?)

后来我意识到,删除跟踪日志是不好的做法。应该保留日志,它在那里,以便我以后可以访问和阅读它。

我想从我部署到的文件夹中删除几乎所有内容,除了我的日志和一些备份文件。有没有办法强制部署从文件中自动清除该文件夹,除了少数文件(扩展名为 .tracelog、.bak、.log 等)?

4

1 回答 1

0

您可以通过以下方式执行此操作:

  • 在项目文件旁边创建YourWebProjectName.wpp.targets文件,其中包含以下内容:

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <MsDeploySkipRules Include="SkipXMLFiles">
      <SkipAction></SkipAction>
      <ObjectName>filePath</ObjectName>
      <AbsolutePath>$(_DestinationContentPath)\\*.xml</AbsolutePath>
      <Apply>Destination</Apply>
      <XPath></XPath>
    </MsDeploySkipRules>
    </Project>
    

相应地改变YourWebProjectName

您可以查看此答案以获取有关如何更细化地控制哪些文件夹/文件被删除/同步的更多详细信息。

注意:VisualStudio 倾向于缓存 wpp.targets 文件,所以如果您使用 VS 来执行您的发布,我建议您在修改它们后重新启动 VS。

于 2013-08-18T16:59:05.400 回答