【问题标题】:Visual Studio loading the right (x86 or x64) dllVisual Studio 加载正确的(x86 或 x64)dll
【发布时间】:2011-02-15 06:31:56
【问题描述】:

我正在使用 x86 中的 Visual Studio。我想为 x32 和 x64 构建我的应用程序。但我需要使用 sqlite .net 连接器,它有一个用于 x86 应用程序的 dll 和另一个用于 x64 应用程序的 dll。

如何配置我的 Visual Studio 以在我的配置为 x64 时加载引用,而在我的配置为 x86 时加载另一个引用?

【问题讨论】:

    标签: .net visual-studio 64-bit system.data.sqlite


    【解决方案1】:

    在您的参考项目文件中使用 MSBUILD 条件

    <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>
    

    【讨论】:

      【解决方案2】:

      这个比 Preet Sangha 稍微简单的答案在项目加载时不会产生警告,只有条件接受的 dll 会出现在解决方案资源管理器中。所以,总的来说,外观更干净,虽然更微妙。 (这是在 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>
      

      【讨论】:

        【解决方案3】:

        您还可以为“任何 CPU”构建应用程序并动态选择要加载的 DLL。

        【讨论】:

        • 你需要看看挂钩事件AppDomain.CurrentDomain.AssemblyResolve。然后,您可以使用 Assembly.LoadFrom 从任何位置加载任何 DLL(例如 System.Data.SQLite.dll)来解析它。您甚至可以将两个版本的 DLL 作为嵌入式资源提供。
        猜你喜欢
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多