Solution 1:

Which reference-type you get depends on how you link the assembly.

  • select the referenced assembly in the project-explorer
  • go to the properties-page

there you find a boolean flag "specific Version"

  • true means: the assembly must have version=xxx
  • false means: ignore the assembly version

(I only have a german-vs2010 so the english translation for the german "Spezifische Version" may be slightly different)

[update]

I tried the following using vcs2010-express german

add reference with default SpecificVersion=False : no version

<Reference Include="Castle.Core">
  <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>

modified reference: SpecificVersion=True : added version

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
  <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>

modified reference again: SpecificVersion=False : version remains and new element SpecificVersion

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
  <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
  <SpecificVersion>False</SpecificVersion>
</Reference>

It seems that the specific version is remembered but ignorede because of <SpecificVersion>False</SpecificVersion>