0

Update 2を使用したVS 2012では、公開するWebサイトがあります。新しい公開ウィザードは、ディスク上のフォルダーにサイトを公開するように構成されていました。一時ファイル フォルダーで何かをチェックしているときに、サイトの公開を実行しました。パブリッシャーが %TEMP%\WebSitePublish にフォルダーを作成し、そこにサイトの 3 つのコピーを作成するのを見ました。

r:\temp\WebSitePublish\web-1279598559\obj\Debug\AspnetCompileMerge\Source\
r:\temp\WebSitePublish\web-1279598559\obj\Debug\AspnetCompileMerge\TempBuildDir\
r:\temp\WebSitePublish\web-1279598559\obj\Debug\Package\

私の Web サイトは非常に大きい (1.6 GB) ため、これらのフォルダーはそれぞれ 1.6 GB と合計 4.8 GB を使用します。これはパブリッシュ中でもディスク容量を浪費していると思いますが、パブリッシュの実装方法について MS と議論することはできません。私が気になる唯一のことは、VS IDE を閉じた後でも、r:\temp\WebSitePublish\web-1279598559 フォルダーが残り、4.8 GB を占有していることです。パブリッシャーがパブリッシュを終了した後に一時ファイルを削除するにはどうすればよいですか?

このサイトの私のpubxmlはこれです:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>x86</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\PrecompiledWeb\Site</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>True</EnableUpdateable>
    <DebugSymbols>True</DebugSymbols>
    <WDPMergeOption>CreateSeparateAssembly</WDPMergeOption>
    <UseFixedNames>True</UseFixedNames>
  </PropertyGroup>
</Project>
4

1 に答える 1

1

なぜ MSBuild は私の BeforePublish ターゲットを無視するのです.csproj.pubxml?または、非表示の .svn フォルダーが _bin_deployableAssemblies フォルダーからコピーされないようにするにはどうすればよいですか? . @sayed-ibrahim-hashimi には、ビルド ターゲットに関する多くの回答があります。

私の経験では、異なる Visual Studio リリース間でいくつかの変更があったため、どのターゲットにアタッチするかを理解するのは困難でしたが、次のようなものが必要だと思います。

  <!-- these are your instructions; name is arbitrary, `AfterTargets` says when -->
  <Target Name="CleanTempDirectory" AfterTargets="AfterPublish">
    <!-- use 'importance=high' to show in the Output window (?) -->
    <Message Text="Cleaning up publish temp directories" Importance="high" />

    <!-- here, specify the directory(ies) to clear; can use build event macros -->
    <CreateItem Include="$(ProjectDir)App_Data\*\*">
      <Output ItemName="GeneratedFiles" TaskParameter="Include" />
    </CreateItem>
    <Delete Files="@(GeneratedFiles)" />
  </Target>

ここで重要な部分は次のとおりです。

  • AfterTargets-- このタスクをいつ実行する必要があるかを指定します (AfterPublish一目瞭然です。それが正しいと思います)。
  • CreateItem-- 指定されたディレクトリ グロブをスキャンし、リストを変数に設定します。@(GeneratedFiles)
  • Delete-- によって作成されたリストを削除しますCreateItem
于 2014-02-13T14:58:47.647 に答える