Dynamiczne referencje do bibliotek w Visual Studio
Często, w trakcie korzystania z zewnętrznych bibliotek w naszym projekcie, pojawia się pewien dylemat. Czy dołączone biblioteki, powinny być skompilowane jako "debug" czy jako "release" ? Zamiast podejmować trudną decyzję zróbmy sobie proste rozwiązanie.
W Automatyzacja projektu z MSBuild-em - 1. Struktura proponowałem przechowywanie "third-party libraries" w katalogu "lib". Teraz dodatkowo zróbmy tam podział na "debug" i "release". Przykład z bibliotekami z IronRuby, które wykorzystuje w aktualnym projekcie:
Struktura jest na tyle oczywista że chyba nie trzeba opisywać.
Teraz w naszym pliku projektu ".csproj" wystarczy tak zmodyfikować referencje do bibiliotek:
<ItemGroup>
<Reference Include="IronRuby">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\net\2.0\IronRuby\$(Configuration)\IronRuby.dll</HintPath>
</Reference>
<Reference Include="IronRuby.Libraries">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\net\2.0\IronRuby\$(Configuration)\IronRuby.Libraries.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Scripting">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\net\2.0\IronRuby\$(Configuration)\Microsoft.Scripting.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Scripting.Core">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\net\2.0\IronRuby\$(Configuration)\Microsoft.Scripting.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
Jezeli nasz projekt jest kompilowany w trybie "Debug", wówczas kompilacja odbędzie się z wykorzystaniem innych bibliotek z podkatalogu "debug". Analogicznie z "Release".