Visual Studio loading the right (x86 or x64) dll

前端 未结 3 1020
陌清茗
陌清茗 2020-12-14 02:00

I\'m working on Visual Studio in an x86. I would like to build my application for both x32 and x64. But I need to use the sqlite .net connector which has a dll for x86 apps

相关标签:
3条回答
  • 2020-12-14 02:37

    in your project file in reference use an MSBUILD conditional

    <Reference 
           Include="SomeAssembly86, Version=0.85.5.452, Culture=neutral, PublicKeyToken=41b332442f1101cc, processorArchitecture=MSIL"  
             Condition=" '$(Platform)' == 'AnyCPU' ">
          <SpecificVersion>False</SpecificVersion>
          <HintPath>..\..\Dependencies\SomeAssembly.dll</HintPath>
          <Private>False</Private>
        </Reference>
        <Reference 
             Include="SomeOtherAssembly, Version=0.85.5.999, Culture=neutral, PublicKeyToken=41b332442f1101cc, processorArchitecture=MSIL" 
             Condition=" '$(Platform)' == 'x64' ">
          <SpecificVersion>False</SpecificVersion>
          <HintPath>..\..\Dependencies\SomeOtherAssembly.dll</HintPath>
          <Private>False</Private>
        </Reference>
    
    0 讨论(0)
  • 2020-12-14 02:44

    This slightly simpler answer than Preet Sangha's will not generate a warning when the project is loaded and only the conditionally accepted dll will appear in the Solution Explorer. So, overall, the appearance is cleaner, although more subtle. (This was tested in Visual Studio 2010.)

    <Reference Include="p4dn" Condition="$(Platform) == 'x86'">
      <HintPath>..\..\ThirdParty\P4.Net\clr4\x86\p4dn.dll</HintPath>
    </Reference>
    <Reference Include="p4dn" Condition="$(Platform) == 'x64'">
      <HintPath>..\..\ThirdParty\P4.Net\clr4\x64\p4dn.dll</HintPath>
    </Reference>
    
    0 讨论(0)
  • 2020-12-14 02:59

    You can also build your application for "Any CPU" and dynamically choose which DLL to load.

    0 讨论(0)
提交回复
热议问题