SORU
30 EYLÜL 2010, PERŞEMBE


Visual Studio binada zaman koşullu olarak 32 veya 64 bit başvuru kullanın

32 bit ve 64 bit olarak inşa eden bir projem var ve 32 bit ve 64 bit bağımlılıkları gelen. Switch konfigürasyonları ve doğru başvuru kullanılmış olması mümkün olmak istiyorum, ama Visual Studio mimarlık-uygun bağımlılığı kullanımı nasıl söyleyeceğimi bilmiyorum.

Belki bu konuda yanlış şekilde gidiyorum, ama yapılandırma açılır 86 ve x 64) arasında geçiş yapabilmek, ve başvurulan DLL doğru verileri olmak istiyorum.

CEVAP
24 Kasım 2010, ÇARŞAMBA


Manuel edition gerektirir önceki bir proje, ne yaptığıma geldi .csproj dosya(lar). Ayrıca farklı ikililer, ideal olarak birbirlerinin kardeşleri için ayrı bir dizin ve platform ile aynı adı taşıyan hedefliyoruz.

Proje için tek bir platform referansları ekledikten sonra açın .bir metin düzenleyicisi csproj. <Project> öğesi içinde <ItemGroup> ilk öğesinden önce, yayınladığınız belirlemek için yardımcı olacaktır aşağıdaki kodu (ve bina) ekleyin.

<!-- Properties group for Determining 64bit Architecture -->
<PropertyGroup>
  <CurrentPlatform>x86</CurrentPlatform>
  <CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform>
</PropertyGroup>

Sonra, belirli bir platform başvurular için, aşağıdaki gibi değişiklik:

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

Yukarıda tanımlanan $(CurrentPlatform) bu özelliği kullanın. Bunun yerine, hangi platform için de hangi için ifade kullanabilirsiniz. Ayrıca, ya da ihtiyacınız olabilir:

  • $(Platform) $(PROCESSOR_ARCHITEW6432) $(PROCESSOR_ARCHITECTURE) projelerin SADECE hedef platform dikkate almak yerine
  • /32 bit bir platformda çalıştırmak için 64 bit bir ikili yapı başvuran değilsin ki mevcut makine için uygun olmak için bir platform olarak belirlenmesi mantığını değiştirmek.

Bu aslında iş yerinde bir iç Wiki için kaleme aldım, ancak, onu modifiye ettim ve eğer adım adım ayrıntılı talimatlar ilgilenen varsa 10**, gönderildi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kndx

    kndx

    11 Mart 2006
  • MrMimoB

    MrMimoB

    11 NİSAN 2011
  • waterfairy17

    waterfairy17

    9 Aralık 2007