[英]Customize Publish for ASP.NET
我有一個asp.net項目,每次發布后都需要運行一些代碼。
我試圖通過以下方式完成此操作:
使用外部構建工具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.