簡體   English   中英

在 dotnet-publish 中,屬性覆蓋是否會傳播到所有其他引用的項目? 這能控制嗎?

[英]In dotnet-publish, do property overrides propagate to all other referenced projects? Can that be controlled?

我正在嘗試構建一個具有覆蓋屬性的項目。

dotnet publish MyProject.csproj -f netcoreapp3.0 -c Release -r win-x86 /p:CopyOutputSymbolsToPublishDirectory=false /p:OutputType=WinExe

但是,它會導致類庫依賴項中的構建錯誤。

error CS5001: Program does not contain a static 'Main' method suitable for an entry point

我只能假設/p:OutputType=WinExe正在向下傳播並覆蓋它們的屬性。 有沒有辦法阻止它? 我可以讓該覆蓋僅適用於目標項目嗎?

奇怪的是,如果我在沒有/p:OutputType=WinExe的情況下構建,然后立即使用/p:OutputType=WinExe ,它會成功。 (我猜,依賴項是構建和緩存的。)

我將此作為問題發布到 GitHub 並收到此回復

在命令行指定一個屬性會導致它被設置為一個全局屬性 默認情況下,全局屬性由作為ProjectReference構建的項目繼承(或者使用 MSBuild 中的MSBuild任務)。

沒有簡單的方法可以禁用此功能,但有一些選項:

  1. 使用其他項目未使用的不同屬性(可能是MyProjectOutputType )並根據MyProject.csproj中的屬性設置OutputType
  2. 通過在它擁有的所有ProjectReferences上設置元數據UndefineProperties="OutputType"告訴MyProject.csproj避免將OutputType元數據傳遞給它的引用(可能通過項目定義而不是每個ProjectReference XML 節點)

暫無
暫無

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

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