簡體   English   中英

定義要使用 dotnet watch 運行的命令

[英]Defining command to be run with dotnet watch

我有一個帶有反應前端的 dotnet 核心項目,使用 neutrino 來管理預設和配置。 構建過程在編譯 dotnet 代碼之前運行“ yarn build ”以使用 Babel 構建 jsx 文件:

  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="yarn build" />
  </Target>

我已經使用以下內容設置了我的 csproj 文件以觀察更改:

  <ItemGroup>
    <Watch Include="**\*.cs" />
    <Watch Include="**\*.jsx" Exclude="node_modules\**\*;build\*" />
  </ItemGroup>

當我使用“ dotnet watch run ”運行項目時,一切正常,但 jsx 文件和 dotnet 項目的構建過程的總長度可能需要大量時間。

有沒有辦法配置它,以便“ yarn build ”僅針對 jsx 文件中的更改運行,並且僅在 cs 文件更改時重建 dotnet 部分?

您可以向dotnet提供自定義參數,而不是run以執行自定義msbuild目標:

dotnet watch msbuild /t:YarnBuild

對於項目文件中的目標,例如:

<Target Name="YarnBuild" BeforeTargets="BeforeBuild">
  <Exec Command="yarn build" />
</Target>  
<ItemGroup>
  <Watch Include="**\*.jsx" Exclude="node_modules\**\*;build\*" />
</ItemGroup>

我知道這有點晚了,但我想加入並在 Martin Ullrich 的回答中添加更多內容。 我建議設置兩個單獨的后台任務來觀看兩種不同類型的編譯。

在 bash 中:

dotnet watch run & # watch C# changes
dotnet watch msbuild /t:YarnBuild & # watch javascript changes

注意& ,它在后台執行前面的命令。

要將后台進程帶到前台,首先使用jobs命令查看后台進程。 從那里,您可以使用fg <processID>將其置於前台。 CTRL+Z 將其發送回后台。

在 PowerShell 中:

Start-Job { dotnet watch run }; # watch C# changes
Start-Job { dotnet watch /t:YarnBuild }; # watch javascript changes

我不知道有什么方法可以像在 bash 中那樣將 powershell 作業帶到前台,但是您可以使用Receive-Job讀取輸出。 首先,使用Get-Job獲取所有正在運行的作業及其 ID 的列表。 從那里,使用Receive-Job <processID>查看您的作業的輸出。

我發現這種方法最符合人體工程學,因為它讓我省去了不得不想出一個單一命令來做我想做的一切的麻煩。 使用后台作業可能會導致更多的按鍵操作,但工作流程更易於遵循。 :)

有關 bash 作業的更多信息: https : //www.gnu.org/software/bash/manual/html_node/Job-Control-Basics.html

有關 powershell 作業的更多信息: https ://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_jobs ? view = powershell-7.1

暫無
暫無

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

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