Перенаправление сборки в коде вместо app.config - PullRequest
0 голосов
/ 15 января 2010

Я использую Ironruby для выполнения скрипта, который загружает сборку с зависимостью, которую необходимо перенаправить с v2.0.0.0 на v3.5.0.0 в app.config, например:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="3.5.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.CompactFramework.Build.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="9.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="3.5.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
</runtime> 

Скрипт работает с этим перенаправлением, но для этого требуется, чтобы я всегда менял файл ironruby app.config, и он применяется ко всем скриптам. Мне нужно либо:

  • определить это перенаправление либо для одного скрипта
  • выполнить код, который регистрирует перенаправление, прежде чем требовать проблемной сборки

Как?

Ответы [ 2 ]

1 голос
/ 19 февраля 2010

Вы можете избежать изменения IronRuby app.config, используя хак, который я написал под названием configuration_settings_hackery.rb. Вы можете прочитать об этом в моем блоге. Сообщение в блоге содержит ссылку на GIST на GitHub.

Я использую этот хак каждый день, и у меня был большой успех с ним. Вам нужно будет изменить последнюю строку файла configuration_settings_hackery.rb, чтобы она указала на местоположение вашего app.config. Версия, которую я выложил, просто ищет c:\app.config.

0 голосов
/ 17 января 2010

Я бы попытался создать новый AppDomain с AppDomainSetup.ConfigurationFile , установленным на ваш специальный app.config, а затем запустить ваш скрипт в этом AppDomain.

...