kovac
kovac

Reputation: 5389

Could not load file or assembly 'System.Net.Http, Version=2.2.29.0'

I'm working on a VSTO Outlook Add-In built using Visual Studio 2010. I don't have Nuget Package Manager installed. When I run the Add-In in Outlook I get the exception:

Could not load file or assembly 'System.Net.Http, Version=2.2.29.0'

I simply cloned the original project from GitHub. When I run it in Debug using Visual Studio, it works fine. But, once I publish to setup.exe and install, I get the above issue. The reference to System.Net.Http is already added.

My app.config file for Outlook version 2007 is:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Outlook2007.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <appSettings>
  </appSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><userSettings>
    <PluginOutlook2007.Properties.Settings>
      <setting name="TokenSettingNeed" serializeAs="String">
        <value>else imported dll settings don t work</value>
      </setting>
    </PluginOutlook2007.Properties.Settings>
  </userSettings>
</configuration>

In the same solution, there's a second project targeting Outlook 2010. app.comfig for that is below:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="PluginOutlook2010.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <appSettings>
  </appSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <userSettings>
    <PluginOutlook2010.Properties.Settings>
      <setting name="testval" serializeAs="String">
        <value>34</value>
      </setting>
    </PluginOutlook2010.Properties.Settings>
  </userSettings>
</configuration>

Thenb there's a third project in the same solution (which has the business logic shared by the 2007 and 2010 projects with the app.config below. The System.Net.Http namespace is actually used by this third project:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="PluginOutlookCommon.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
      // some stuff here
    </userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /></startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Upvotes: 2

Views: 1063

Answers (1)

kovac
kovac

Reputation: 5389

I managed to resolve this by commenting out the

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0" />
    </dependentAssembly>
</assemblyBinding>

part in the app.config file.

Upvotes: 4

Related Questions