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