18. Februar 2011

Reihenfolge, in der Assemblies geladen werden unter .NET

Möchte man eine Assembly, die einen "Strong Name" hat und im GAC ist explizit aus einem lokalen Verzeichnis laden (z.B. zu Debug-Zwecken), muss die Assembly ohne Public Key referenziert werden. Dass erreicht man z.B. in Visual Studio in dem man das Projektfile editiert und unter
…

<ItemGroup>

    <Reference Include="RFeest.SomeAssembly, Version=1.0.0.3421, Culture=neutral, PublicKeyToken=2a234234234fasd, processorArchitecture=MSIL">

      <SpecificVersion>False</SpecificVersion>

      <HintPath>..\..\..\projects\bin\RFeest.SomeAssembly.dll</HintPath>

    </Reference>

…

den PublicKey entfernt:

…

<ItemGroup>

    <Reference Include="RFeest.SomeAssembly, processorArchitecture=MSIL">

      <SpecificVersion>False</SpecificVersion>

      <HintPath>..\..\..\projects\bin\RFeest.SomeAssembly.dll</HintPath>

    </Reference>

…

Das hängt damit zusammen, dass immer zuerst im GAC gesucht wird.

Siehe auch http://msdn.microsoft.com/en-us/library/aa720133.aspx und http://www.informit.com/articles/article.aspx?p=30601&seqNum=6

Keine Kommentare: