Webアプリケーションプロジェクトを公開した後、世界で最も単純なタスク(以下を参照)が実行されていません。理由は何ですか?
<Target Name="AfterPublish">
<Copy SourceFiles="C:\A.txt" DestinationFiles="C:\B.txt" />
</Target>
注:以下は、VS2010と、[ビルド/公開{プロジェクト名}]ダイアログで選択された[Web配置]公開方法を使用したWebアプリケーションプロジェクトの公開に適用されます。
Julien Hoarauの「公開」の正解は、上記の場合に呼び出されたmsbuildターゲットの名前ではありません。実際のターゲット名は "MSDeployPublish"です。
したがって、 "Target"要素を定義する必要があります。その "AfterTarget" )属性の値は "MSDeployPublish"に設定されます-"Name"属性の値はnotではありません(ターゲット名の中で一意である限り)。
方法は次のとおりです。
</Project>
タグを閉じる直前に、<Target Name="CustomPostPublishAction" AfterTargets="MSDeployPublish">
要素を追加します。 「CustomPostPublishAction」に任意の名前を選択してください。<Exec Command="..." />
要素を使用します。例:
<Target Name="CustomPostPublishActions" AfterTargets="MSDeployPublish" >
<Exec Command="echo Post-PUBLISH event: Active configuration is: $(ConfigurationName)" />
</Target>
注意:
<Target>
要素のドキュメントについては、 http://msdn.Microsoft.com/en-us/library/t50z2hka.aspx を参照してください。VisualStudio2013。Webアプリケーションをファイルシステムに公開します。
<Target Name="Moose" AfterTargets="GatherAllFilesToPublish" >
<Message Importance="high" Text="***Moooooooooooooooose***$(WPPAllFilesInSingleFolder)***$(TargetDir)" />
</Target>
注:ビルドログが少なくとも詳細に設定されていることを確認してください。 [ツール]-> [オプション]-> [プロジェクトとSolutinos]-> [ビルドと実行]-> [MSBuild出力の詳細度]で検索します。実際の公開前に最後に実行されたビルドターゲットを調査する場合も、診断は問題ありません。
<Import ... />
の後にターゲットのオーバーライドを定義する必要があります詳細な詳細情報を使用してMSBuildを起動し、ターゲットが無視される理由を確認します。
msbuild project.csproj /t:Target_to_Launch /v:d
AfterPublish
はPublish
ターゲットの後に呼び出されますが、Publish
はWebアプリケーションを公開するときに呼び出されるターゲットではありません。 Publish
は公開のターゲットですClickOnceアプリケーション。
VisualStudioでPublish
を呼び出すときに使用されるターゲットを見つける必要があります。これは、Package
、WebPublish
...の場合があります。
私は今、ファイルベースの公開に適したターゲットを見つけるためにターゲットの混乱を理解するのが少し怠惰です(あなたが興味を持っているかもしれません)。その間にできることは、*。pubxmlファイルでAfterBuildターゲットを定義することです。
<Target Name="AfterBuild">
.。
公開中のディレクトリにファイルをコピーすると、公開プロセス中のどこかでクリーンアップが行われるため、プロパティ「DeleteExistingFiles」もオフにすることをお勧めします。
<DeleteExistingFiles>False</DeleteExistingFiles>