0

ASP.NET-MVC3 アプリケーションを IIS7 サーバーにデプロイしています。

「宛先に余分なファイルを残す (削除しない)」をチェックすると、Web への公開は正常に機能します。

チェックボックスがチェックされていない場合、通常は次のエラーで失敗します。

エラー 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 に答える