[英]How to specify build configuration for referenced projects when using `dotnet build` or `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
,它會成功。 (我猜,依賴項是構建和緩存的。)
在命令行指定一個屬性會導致它被設置為一個全局屬性; 默認情況下,全局屬性由作為
ProjectReference
構建的項目繼承(或者使用 MSBuild 中的MSBuild
任務)。沒有簡單的方法可以禁用此功能,但有一些選項:
- 使用其他項目未使用的不同屬性(可能是
MyProjectOutputType
)並根據MyProject.csproj
中的屬性設置OutputType
。- 通過在它擁有的所有
ProjectReferences
上設置元數據UndefineProperties="OutputType"
告訴MyProject.csproj
避免將OutputType
元數據傳遞給它的引用(可能通過項目定義而不是每個ProjectReference
XML 節點)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.