簡體   English   中英

由於某種原因,WinForms 項目似乎依賴於 ASP.NET 運行時

[英]WinForms project seems to depend on ASP.NET runtime for some reason

我們最近將一個大型解決方案從 .NET 4.8 轉換為 .NET 6。它由幾個 WinForms 可執行項目、class 庫項目和單元測試項目組成。 但是我們無法讓可執行文件在測試機器上運行。 我們已經在該機器上安裝了 .NET 6 桌面運行時,但可執行文件仍然拒絕運行:

您必須為 .NET 安裝缺少的框架

我們發現,在我們也安裝了 ASP.NET Core Runtime 之后,除了桌面運行時,這個錯誤就不會再出現了。 這令人驚訝,因為據我所知,我們的解決方案中沒有使用 ASP.NET。 ProjectName.runtimeconfig.json文件似乎包含以下內容:

{
  "runtimeOptions": {
    "tfm": "net6.0",
    "frameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "6.0.0"
      },
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "6.0.0"
      },
      {
        "name": "Microsoft.AspNetCore.App",
        "version": "6.0.0"
      }
    ]
  }
}

刪除提到Microsoft.AspNetCore.App的部分可以在沒有 ASP.NET 核心運行時的測試機器上運行可執行文件。 但是為什么在那個文件中甚至提到了它?

這里發生了什么? 難道我們的項目在某種程度上真的需要 ASP.NET,可能是因為我們正在使用的一些 NuGet package? 如果是這樣,我們如何才能找出這種依賴來自哪里? 理想情況下,我們的應用程序應該只依賴於 .NET 6 Desktop Runtime。

我的一個同事發現了這個問題。

以下內容存在於多個項目文件中:

<ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

刪除那些解決了問題。

根據 git 日志,該段文本似乎是由轉換工具(升級助手)出於某種原因生成的。

暫無
暫無

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

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