我想制作我的应用程序的x86和x64版本,因为我正在使用的某些库在x86和x64上有差异(例如SQLite)。我为发布版本进行了新配置,该版本具有目标操作系统“ x64”。
是否有一种方法可以为配置定义不同的DLL,例如对x86版本使用SQLite.dll,对x64版本使用SQLite64.dll?
您可以在项目文件中的dll引用中添加条件,但不能使用Visual Studio进行操作-您必须手动编辑项目文件。有关如何操作,请参见this。
您需要做的是仅在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文件的内置关键字Choose
和When
。
以下示例:
<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。 >