Cześć, mam małą zagwozdkę. Tworzę sobie aplikację, która wykorzystuje pewną bibliotekę. To jest biblioteka pisana w C, ale ma wrappera do C# i właśnie tym wrapperem się posługuję. Niestety zarówno wrapper jak i dllki są w wersjach 32 i 64 bitowych. Teraz pytanie, co mam zrobić, żeby stworzyć aplikację 32 i 64 bitową? Tzn. przykładowo w C++ jest prosta sprawa. Można podać różne katalogi i liby dla 32 i 64 bitowych wersji. W C# widzę, że takiej opcji nie ma, a dll C# powinny być budowane jako AnyCPU i wtedy nie ma problemu. Jak sobie z tym poradzić?
zrob dwie aplikacje, jedna 64 bitowa druga 32 bitowa.
Serio? Nie ma normalnego rozwiązania?
yyy jak to nie ma takiej opcji? prawym na solucji i masz opcję Configuration manager, gdzie sobie definiujesz konfiguracje buildowe, różne konfiguracje buildowe mogą mieć referencję do różnych wersji dllek, możesz sobie stworzyć jedną x64 a drugą x32, możliwe że wszystkiego nie da się wykilkać z interfejsu i trzeba edytować csproje, co nie zmiena faktu że się da.
To pokaż mi, gdzie to zrobić. Bo w configuration managerze możesz sobie ustawić, jakie projekty mają się budować (lub nie budować) w jakiej bitowości. W csproj zależności wydają się nie być w żaden sposób powiązane z bitowością.
Co dokładnie chcesz uzyskać? Chcesz raz kliknąć Build i mieć aplikację w dwóch wersjach? Wtedy potrzebujesz dwóch projektów albo cudowania z MSBuildem (nie wiem, jak to zrobić, ale zapewne da się to ogarnąć własnymi skryptami). Czy może chcesz jedną aplikację i aby automatycznie do katalogu wyjściowego skopiowała się odpowiednia dllka? Wtedy możesz użyć Post Build Events.
Fragmenty kodu z mojego cs proja:
<PropertyGroup Condition="'$(Configuration)' == 'Debug' OR '$(Configuration)' == 'Release'">
<TajneAPIPath>..\..\Binaries\2016</TajneAPIPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Debug2017' OR '$(Configuration)' == 'Release2017'">
<TajneAPIPath>..\..\Binaries\2017</TajneAPIPath>
</PropertyGroup>
<Reference Include="TajneAPI">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(TajneAPIPath)\TajneAPI.dll</HintPath>
<Private>False</Private>
</Reference>
W zależności od wybranego profilu raz builduje mi z dllkami z folderu 2016, raz z 2017, analogicznie mozesz sobie zrobić x86 i x64
Zrób jedną wersję aplikacji, 32-bitową, a będziesz miał mniej roboty.