簡體   English   中英

自定義ASP.NET的發布

[英]Customize Publish for ASP.NET

我有一個asp.net項目,每次發布后都需要運行一些代碼。

我試圖通過以下方式完成此操作:

  1. 使用vs項目文件
  2. 使用外部構建工具Cake(C#make)

    1.)因此找到了與此問題相關的一些主題:

因此,如建議的那樣,我在項目文件中添加了以下代碼:

  <Target Name="BeforePublish">
    <Message Text="BeforePublish"></Message>
    <Warning Text="BeforePublish"></Warning>
  </Target>
  <Target Name="AfterPublish">
    <Message Text="AfterPublish"></Message>
    <Warning Text="AfterPublish"></Warning>
  </Target>
  <Target Name="MSDeployPublish" >
    <Message Text="MSDeployPublish"/>
    <Warning Text="MSDeployPublish"/>
  </Target>
  <Target Name="PipelinePreDeployCopyAllFilesToOneFolder" >
    <Message Text="PipelinePreDeployCopyAllFilesToOneFolder" />
    <Warning Text="PipelinePreDeployCopyAllFilesToOneFolder" />
  </Target>
  <Target Name="BeforeBuild">
    <Message Text="BeforeBuild"></Message>
    <Warning Text="BeforeBuild"></Warning>
  </Target>
  <Target Name="AfterBuild">
    <Message Text="AfterBuild"></Message>
    <Warning Text="AfterBuild"></Warning>
  </Target>

但是僅執行Before-和AfterBuild。 所有其他目標只是完全被忽略。 也許是因為這些其他主題都使用了VS 2010和2012。在VS 2017中有可行的方法嗎?

2.)當我在任務中使用以下代碼時,與使用VS進行編譯時得到的輸出不同。

   MSBuild(projectFile, new MSBuildSettings()
   .WithProperty("OutDir", publishDir)
   .WithProperty("DeployTarget", "WebPublish")
   .WithProperty("DeployOnBuild", "true")
   .WithProperty("WebPublishMethod", "FileSystem")
   .WithProperty("Configuration", "Release")
   );

因此,這也不是可行的解決方案。

感謝您為使此方法以某種方式工作提供的幫助。

這取決於您要執行的操作,但是如果要在發布后運行代碼,則需要將任務放在Microsoft.Web.Publishing.targets的目標之一之后(搜索文件以查看目標的完整列表) 。 通常您需要AfterTargets="MSDeployPublish"

1.)因此找到了與此問題相關的一些主題。 因此,如建議的那樣,我在項目文件中添加了以下代碼。 實際上,在對vs2017進行測試之后,從輸出日志中可以看到詳細的信息,發布時我可以找到下面的圖片:

在此處輸入圖片說明 在此處輸入圖片說明

1,似乎在VS2017中,在IDE中發布項目時,沒有有效的發布目標來重新定義或AfterTargets。 因此,恐怕您無法通過在VS中發布來實現此目標。

2.相反,我認為您可以考慮使用msbuild工具。 將下面的測試目標腳本添加到您的發布配置文件中(對於我:FolderProfile.pubxml):

<Project...>
...
  <Target Name="Test" AfterTargets="WebFileSystemPublish">
    <Message Text="I'm a test target after webpublish"/>
    <Move SourceFiles="C:\Ase\favicon.ico" DestinationFolder="C:\tomorrow"/>
  </Target>
</Project>

打開您的開發人員命令提示符以獲取vs2017,然后鍵入以下命令:

msbuild C:\xxx\WebApplication55\WebApplication55.sln /p:DeployOnBuild=true /p:PublishProfile=C:\xxx\repos\WebApplication55\WebApplication55\Properties\PublishProfiles\FolderProfile.pubxml 

在網絡發布過程之后,它將運行測試目標。

2.)當我在任務中使用以下代碼時,與使用VS進行編譯時得到的輸出不同。 不確定您將這段代碼用於什么。 但是您可以使用測試目標執行所需的操作。在測試目標中添加MSBuild任務可以為您的#2實現此目標。

正如您提到的,您有一些代碼,請先將這些代碼編譯為.exe,然后將Command Task添加到測試目標中可能會有所幫助。 另外:根據上面的信息,看來您使用文件系統和asp.net,所以我使用asp.net Web應用程序進行測試(不是.net核心)。 將會收到反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM