Visual Studio:用于配置的不同DLL

问题描述 投票:18回答:4

我想制作我的应用程序的x86和x64版本,因为我正在使用的某些库在x86和x64上有差异(例如SQLite)。我为发布版本进行了新配置,该版本具有目标操作系统“ x64”。

是否有一种方法可以为配置定义不同的DLL,例如对x86版本使用SQLite.dll,对x64版本使用SQLite64.dll?

  1. 不幸的是,由于那些不兼容x64的DLL,我无法使用默认的“任何平台”选项。
  2. 我想支持真正的x64,并且不希望在x64 OS上运行32位应用程序。
visual-studio dll x86 64-bit
4个回答
13
投票

您可以在项目文件中的dll引用中添加条件,但不能使用Visual Studio进行操作-您必须手动编辑项目文件。有关如何操作,请参见this

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


1
投票

您需要对项目文件中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>

0
投票

哪个VS版本?您正在开发哪种语言?如果是本机(=非托管)C ++,则几乎每个设置(包括使用的库)的设置都可以不同。在项目属性对话框的顶部,只需选择要修改的配置设置即可。


0
投票

存在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。 >

© www.soinside.com 2019 - 2024. All rights reserved.