![](/img/trans.png)
[英]How to point to the right DLLs in different visual studio configurations?
[英]Visual Studio: Different DLLs for configurations
我想为我的应用程序制作 x86 和 x64 版本,因为我使用的一些库在 x86 和 x64(例如 SQLite)上有所不同。 我为目标操作系统“x64”的发布版本做了一个新配置。
有没有办法为配置定义不同的 DLL,例如使用 SQLite.dll 用于 x86 版本和 SQLite64.dll 用于 x64 版本?
您可以向项目文件中的 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 文件,它存在内置关键字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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.