2

私の主な目標は、.NET を使用cmdして、縮小された JS スクリプトを ASP.NET Web アプリケーションの展開パッケージに追加することです。

また、私の質問はこのトピックと重複しているように見えるかもしれませんが、これこれでさえ、そうではありません。私の問題は、私が に接続しようとしたことCopyAllFilesToSingleFolderForPackageDependsOnです。Sayed Ibrahim Hashimiが彼の回答で提案したように、私は自分の習慣の中で使用し、この事実を確認するために切り替えました。修正方法がわかりません。上記の質問とは異なる変更を加えた対応する XML スニペットをファイルに直接配置し、パッケージのカスタマイズに使用する別のファイルにも配置しようとしました。CopyAllFilesToSingleFolderForMsdeployDependsOnPipelineCollectFilesPhaseDependsOn<Message Text="Inside of CustomCollectFiles" Importance="high"/>Target/v:diagmsbuild.exe.csproj.wpp.targets

私の開発環境には VS2010 と VS2013 が含まれており、Web PI、Web 配置ツール、Windows Azure SDK を介して Web 配置 3.5 をインストールしました。私のシステム PATH 環境変数には、実行できるようにするためのものが含まれc:\Windows\Microsoft.NET\Framework64\v4.0.30319\;c:\Program Files\IIS\Microsoft Web Deploy V3ていMSBuildます。MSBuild ログを調べると、次のように表示されます。MSDeploycmd

CopyAllFilesToSingleFolderForMsdeployDependsOn = 
  ;
  ;

CopyAllFilesToSingleFolderForPackageDependsOn = 
  ;

  ;
;

いくつかのものはここに入る

PipelineDeployPhaseDependsOn = 
  ;
  Package;

では、私の質問は、機能不全のパッケージ パイプラインのソースをどこで見つけるかということです。私が見逃したその他の種類の診断は何ですか?

4

1 に答える 1

7

おそらくMSBuildはビルドターゲットをひどく間違ってキャッシュしたようですが、Windowsが再起動した後、この投稿のものを含むあらゆる種類のフックが最終的に問題を解決し、期待どおりに機能し始めました.

また、自動ビルドを行っているすべての人にとって、Web デプロイ関連のものをメイン{Project Name}.csprojファイルから対応する{Project Name}.wpp.targetsファイルに移動できることに注意することは興味深いかもしれません。それらを TFS に含めたい、またはさまざまな公開ターゲットのビルド動作をカスタマイズしたい。

.wpp.targetsだから、これは今私のために働く私の最終的なファイルです:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
        <IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>
        <ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
        <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
        <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
  </PropertyGroup>

  <Target Name="BeforeBuild">
    <Message Text="Building our Web Deploy package using Tools path $(VSToolsPath)" Importance="high"/>
  </Target>

<!--  More verbose way of doing the same as with BeforeTargets -->
<!--  <PropertyGroup>-->
<!--    <CopyAllFilesToSingleFolderForPackageDependsOn>-->
<!--      CollectJsMinFiles;-->
<!--      $(CopyAllFilesToSingleFolderForPackageDependsOn);-->
<!--    </CopyAllFilesToSingleFolderForPackageDependsOn>-->
<!--    <CopyAllFilesToSingleFolderForMsdeployDependsOn>-->
<!--      CollectJsMinFiles;-->
<!--      $(CopyAllFilesToSingleFolderForMsdeployDependsOn);-->
<!--    </CopyAllFilesToSingleFolderForMsdeployDependsOn>-->
<!--  </PropertyGroup>-->
<!--  <Target Name="CollectJsMinFiles"> -->

  <Target Name="CollectJsMinFiles" BeforeTargets="CopyAllFilesToSingleFolderForPackage;CopyAllFilesToSingleFolderForMsdeploy">
    <Message Text="Collecting min JS files in CollectJsMinFiles" Importance="high"/>
    <ItemGroup>
      <JsMinFiles Include="**\*.min.js" />
      <FilesForPackagingFromProject  Include="%(JsMinFiles.Identity)">
        <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
</Project>
于 2013-12-25T09:36:35.893 に答える