Dot-Net
在 Visual Studio 中建構時有條件地使用 32/64 位引用
我有一個以 32/64 位建構並具有相應 32/64 位依賴項的項目。我希望能夠切換配置並使用正確的參考,但我不知道如何告訴 Visual Studio 使用適合體系結構的依賴項。
也許我的做法是錯誤的,但我希望能夠在配置下拉列表中在 x86 和 x64 之間切換,並讓引用的 DLL 具有正確的位數。
這是我在之前的項目中所做的,這需要手動編輯 .csproj 文件。您還需要為不同的二進製文件提供單獨的目錄,最好是彼此的兄弟,並且與您的目標平台具有相同的名稱。
將單個平台的引用添加到項目後,在文本編輯器中打開 .csproj。在
<ItemGroup>元素中的第一個元素之前<Project>,添加以下程式碼,這將有助於確定您在哪個平台上執行(和建構)。<!-- Properties group for Determining 64bit Architecture --> <PropertyGroup> <CurrentPlatform>x86</CurrentPlatform> <CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform> </PropertyGroup>然後,對於您的平台特定參考,您進行如下更改:
<ItemGroup> <Reference Include="Leadtools, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.dll</HintPath> </Reference> <Reference Include="Leadtools.Codecs, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.Codecs.dll</HintPath> </Reference> <Reference Include="Leadtools.ImageProcessing.Core, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.ImageProcessing.Core.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> <Reference Include="System.Data.Entity" /> <!-- Other project references --> </ItemGroup>注意
$(CurrentPlatform)我們上面定義的屬性的使用。相反,您可以對要為哪個平台包含哪些程序集使用條件。您可能還需要:
- 將
$(PROCESSOR_ARCHITEW6432)and$(PROCESSOR_ARCHITECTURE)替換$(Platform)為僅考慮項目的目標平台- 更改平台確定邏輯以適合目前機器,這樣您就不會建構/引用 64 位二進製文件以在 32 位平台上執行。
我最初是為工作中的內部 Wiki 編寫的,但是,如果您對詳細的分步說明感興趣,我已經對其進行了修改並將完整的過程發佈到我的部落格上。