簡體   English   中英

由於找不到“Microsoft.Bcl.AsyncInterfaces”,解析 JSON 時 Visual Studio 擴展失敗

[英]Visual Studio extension fails when parsing JSON due to not finding "Microsoft.Bcl.AsyncInterfaces"

我正在為 VS2022 開發 Visual Studio 擴展。 擴展的部分功能涉及解析 JSON。 為此,我安裝了最新版本的 System.Text.JSON (7.0.1)。 但是,在實驗實例中,當我嘗試運行涉及解析 JSON 的任務時,出現此錯誤:

錯誤圖片

我正在使用 .NET Framework 4.7.2。 在項目屬性的 VSIX 選項卡中,我將其設置為將 VSIX 內容部署到實驗實例以進行調試。 此外,我的調試配置看起來像這樣——盡管我嘗試調整它以使其正常工作,但無濟於事。

在此處輸入圖像描述

我嘗試了一些東西。 首先,我從 NuGet 包管理器添加了對 Microsoft.Bcl.AsyncInterfaces 7.0.0 的引用。 這沒有幫助。 對於上下文,這是 CSPROJ 的這一部分的樣子

  <ItemGroup>
    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces">
      <Version>7.0.0</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.VisualStudio.SDK" Version="15.0.1" ExcludeAssets="runtime">
      <IncludeAssets>compile; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.4.2119">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="System.Text.Json">
      <Version>7.0.1</Version>
    </PackageReference>
  </ItemGroup>

我也試過:

  • 重置實驗實例。
  • 刪除解決方案中的“bin”和“obj”文件夾
  • 升級到最新版本的 Visual Studio 2022
  • 升級 System.Text.JSON(實際上我之前是用 7.0.0 嘗試的,但我升級到 7.0.1)
  • 碰撞擴展的版本

如果您能為這個苦苦掙扎的擴展創建者提供任何幫助,我將不勝感激:)

原因是默認情況下 Microsoft.Bcl.AsyncInterfaces 被禁止包含在您的 VSIX 中。 這是由 VS SDK 完成的,以減少安裝程序集的重復副本(浪費磁盤空間,因為 VS 已經包含此程序集的一個版本,以及從非默認路徑加載的邊緣情況影響 VS 性能,例如破壞 NGEN)。

在您的情況下,VS 正在發布版本 6.0.0.0 的副本,並且具有從 0.0.0.0-6.0.0.0 的綁定重定向。 但是,您的擴展依賴於 7.0.0.0,無法找到它,因此無法加載。

在 VS 發布 7.0.0.0 版本的副本之前,您需要確保您的版本包含在您的 VSIX 中,並且您為其提供代碼庫(例如,使用ProvideCodeBase屬性)。 我認為(但尚未驗證)在 VSSDK.targets 導入之后將其添加到您的項目文件中可能會使其包含在 VSIX 中:

<ItemGroup>
  <!-- remove this once VS ships this assembly at the version you need -->
  <SuppressFromVsix Remove="Microsoft.Bcl.AsyncInterfaces.dll" />
</ItemGroup>

當然,另一種選擇是使用舊版本的 System.Text.Json,以便它與 VS 當前發布的版本保持一致。

暫無
暫無

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

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