簡體   English   中英

為什么Exec Command在netstandard2.0的.csproj中不起作用?

[英]Why doesn't Exec Command work in a .csproj for netstandard2.0?

我正忙於將代碼從.Net Framework庫遷移到.netstandard2.0庫。 到目前為止,一切進展順利,但現在我被.csproj文件所困擾。

現有項目文件已對此進行了定義

  <Target Name="Rebuild">
    <Exec Command="echo Now Rebuilding the package" />
  </Target>

實際命令執行一個exe,該exe基於xsd生成一堆xml類。

我無法在.netstandard2.0項目中使用它嗎?

我到處搜索過,但找不到無法正常工作的原因...

我懷疑在您的特定實例中, Rebuild目標將被在代碼之后隱式導入的sdk目標覆蓋。 如果要覆蓋SDK提供的任務,則需要更改為顯式SDK導入(而不是<Project Sdk="..."> ):

<Project>
  <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
  <!-- other project content -->
  <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
  <Target Name="Build">
    <!-- overwrite Build target here -->
  </Target>
  <Target Name="Rebuild">
    <!-- overwrite Rebuild target here -->
  </Target>
</Project>

支持Exec目標,盡管echo命令可能會或可能不會運行,具體取決於您在其上運行的平台(因為echo可能只是Shell的內置命令,而無法運行可執行文件)。

確保:

  • 該命令以在PATH上找到的可執行文件的路徑開頭,或者相對於要構建的csproj文件指定為絕對PATH或相對PATH
  • 目標實際上已執行。 例如,某些程序可以使用/t:Clean;Build代替/t:Rebuild

暫無
暫無

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

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