[英]Azure Pipelines: dotnet test fails after dotnet build with -o - "It was not possible to find any compatible framework version"
這是我正在嘗試做的,在自托管代理上運行管道:
- task: DotNetCoreCLI@2
inputs:
command: build
projects: MySolution.sln
arguments: "--configuration MyConfiguration -o $(Build.BinariesDirectory)"
- task: DotNetCoreCLI@2
inputs:
command: test
projects: |
$(Build.BinariesDirectory)\**\*Tests.dll
但是,我讓 TestHost 退出並出現以下錯誤:
找不到任何兼容的框架版本
找不到框架“Microsoft.NETCore.App”,版本“6.0.0”(x64)。
- 沒有找到框架。
在顯式構建到輸出目錄時,如何讓構建代理成功運行我的測試?
一些新信息:Extending the UseDotNet Task with "performMultiLevelLookup: true" 將 "No frameworks were found" 替換為 C:\
問題似乎是 dotnet test 不會在代理工作目錄 (_work_tool\dotnet) 中查找運行時。 PATH 確實包含該路徑(並且在 C:\Program Files... 之前),但帶有正斜杠 (C:\agent_work_tool/dotnet),我不確定這是否是一個問題。
這些問題可能相關:
https://github.com/microsoft/vstest/issues/2228
https://github.com/dotnet/runtime/issues/68180
我懷疑測試任務在錯誤的位置尋找運行時,這就是為什么如果使用 performMultiLevelLookup,它在默認安裝位置找不到任何和一些。 為什么只有當我之前構建到特定的輸出目錄時才會發生這種情況以及如何修復它,這讓我感到困惑。
我嘗試在整個管道運行的各個點輸出 DOTNET_ROOT 環境變量。 它由 UseDotNetTask 設置(到C:\agent\_work\_tool/dotnet
)並且在測試任務之前或之后都沒有改變。 所以我猜,它要么是在測試任務期間臨時設置的,要么是由於正斜杠而被忽略或不起作用。 但是然后:為什么它適用於 dotnet 構建?
在我們在具有多個運行時的服務器上運行的管道中,在我們使用 .NET 核心之前,我們總是必須在頂部包含這樣的任務,如果它有任何不同,請嘗試一下:
steps:
- task: UseDotNet@2
inputs:
version: '6.0.x'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.