Включение Json.NET в расширение Visual Studio - PullRequest
0 голосов
/ 03 марта 2019

Я использую JSON.NET в расширении Visual Studio, и он не включен в дистрибутив ( от Microsoft ).

В связанном билете они просто утверждают, что v9.0.1 следует использовать.А поддержка нескольких версий VStudio «усложняет».

Другой ТАК вопрос дает и отвечает, что не работает во всех случаях.

Я использую пакет nuget, которыйв свою очередь зависит от Newtonsoft.Json 10.0.x.Можно ли продолжать использовать JSON.NET v10.x без каких-либо проблем для Visual Studio?

1 Ответ

0 голосов
/ 04 марта 2019

Одним из возможных решений является использование 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>
...