Owe*_*wen 2 .net c# vsix visual-studio-2022
我正在为 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>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
我非常感谢您能为这个苦苦挣扎的扩展创建者提供任何帮助:)
原因是默认情况下 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>
Run Code Online (Sandbox Code Playgroud)
当然,另一个选择是使用旧版本的 System.Text.Json,以便它与 VS 当前发布的版本保持一致。
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |