繁体   English   中英

Visual Studio:用于配置的不同 DLL

[英]Visual Studio: Different DLLs for configurations

我想为我的应用程序制作 x86 和 x64 版本,因为我使用的一些库在 x86 和 x64(例如 SQLite)上有所不同。 我为目标操作系统“x64”的发布版本做了一个新配置。

有没有办法为配置定义不同的 DLL,例如使用 SQLite.dll 用于 x86 版本和 SQLite64.dll 用于 x64 版本?

  1. 不幸的是,由于那些不兼容 x64 的 DLL,我无法使用默认的“任何平台”选项。
  2. 我想支持真正的 x64,而不是在 x64 操作系统上运行 32 位应用程序。

您可以向项目文件中的 dll 引用添加条件,但不能使用 Visual Studio 执行此操作 - 您必须手动编辑项目文件。 请参阅了解如何执行此操作。

您需要做的是仅在 32 位构建配置中包含对 32 位 dll 的引用,并在 64 位构建配置中包含对 64 位 dll 的引用。

您需要项目文件中 dll 引用的条件。
这将导致 Visual Studio 在您更改活动配置时重新检查条件和参考。
只需为每个配置添加一个条件。

例子:

 <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <Reference Include="DLLName">
      <HintPath>..\DLLName.dll</HintPath>
    </Reference>
    <ProjectReference Include="..\MyOtherProject.vcxproj">
      <Project>{AAAAAA-000000-BBBB-CCCC-TTTTTTTTTT}</Project>
      <Name>MyOtherProject</Name>
    </ProjectReference>
  </ItemGroup>

哪个VS版本? 你用哪种语言开发? 如果本机(=非托管)C++,实际上所有设置,包括使用的库,都可以为每个配置进行不同的设置。 在项目属性对话框的顶部,只需选择您要修改的配置设置。

对于 csproj 文件,它存在内置关键字ChooseWhen

下面的例子:

<Choose>
  <When Condition="'$(Configuration)' == 'DebugConversion'">
    <ItemGroup>
        <ProjectReference Include="..\OfficeConverer\WordConverter\OfficeConverter.csproj">
            <Project>{b0cbxxxx-xxxx-xxxx-xxxx-7f3353aaxxxx}</Project>
            <Name>Saur.OfficeConverter</Name>
        </ProjectReference>
    </ItemGroup>
  </When>
  <Otherwise>
    <ItemGroup>
        <Reference Include="OfficeConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
            <HintPath>..\packages\OfficeConverter.1.0.1\lib\net45\OfficeConverter.dll</HintPath>
        </Reference>
    </ItemGroup>
  </Otherwise>
</Choose>

Bref 说明:在Visual Studio 中选择“DebugConversion”时,项目会在解决方案中加载一个项目名称OfficeConverter,否则(例如默认为“Debug”/“Release”)将恢复并加载一个Nuget Dll。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM