在Visual Studio扩展中包括Json.NET

时间:2019-03-03 12:46:33

标签: json.net visual-studio-extensions vsix

我在Visual Studio扩展中使用JSON.NET,但未包含在发行版(here)中。

在链接票证中,他们仅声明应使用v9.0.1。而且支持多个VStudio版本的“事情变得复杂”。

另一个by design by Microsoft给出并回答并非在所有情况下都有效。

我使用的是nuget程序包,该程序包又取决于Newtonsoft.Json10.0.x。有什么方法可以继续使用JSON.NET v10.x,而不会给Visual Studio造成任何麻烦?

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用AppDomain并将所有与Newtonsoft.json相关的调用包装在新的AppDomain中:

myDomain = AppDomain.CreateDomain("myDomain", AppDomain.CurrentDomain.Evidence,
                                    new AppDomainSetup()
                                    {
                                        ApplicationBase = extensionPath,
                                        ConfigurationFile = Path.Combine(extensionPath, configurationFileName)
                                    });

文件configurationFileName应该随扩展名一起提供,其内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>