![](/img/trans.png)
[英]Error XA2002: Can not resolve reference: `Microsoft.Bcl.AsyncInterfaces`
[英]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>
我也試過:
如果您能為這個苦苦掙扎的擴展創建者提供任何幫助,我將不勝感激:)
原因是默認情況下 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.