J'utilise VS2010 et j'ai essayé d'ajouter quelques assemblys du disque dur local à mon projet C # via la référence de fichier. En jetant un œil dans le fichier csproj
, j'ai parfois trouvé la référence du fichier
<Reference Include="name">
Cependant, il apparaît parfois
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Qu'est-ce qui pourrait causer la différence?
Inspiré par la réponse de k3b, j'ai fait un autre test. J'ai créé un nouveau projet de bibliothèque de classe.
Ajoutez une référence de fichier. La valeur initiale de Version spécifique dans le volet Propriétés est Faux. Le fichier csproj
ressemble à
<Reference Include="Name">
<HintPath>...</HintPath>
</Reference>
Remplacez Version spécifique dans le volet Propriétés par Vrai. VS ajoute une version dans l'attribut Include
.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
</Reference>
Remplacez Version spécifique dans Propriétés volet par Faux à nouveau. VS ajoute un élément enfant SpecificVersion
.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
Il semble donc que la règle soit:
SpecificVersion
, l'assembly de fichier est configuré pour être une version spécifiqueSpecificVersion
est uniquement ajouté avec la valeur False.Une chose que je ne comprends toujours pas:
Le type de référence que vous obtenez dépend de la façon dont vous liez l'assemblage.
vous y trouverez un drapeau booléen "Version spécifique"
(Je n'ai qu'un allemand-vs2010, donc la traduction en anglais de la version allemande "Spezifische" peut être légèrement différente)
[mise à jour]
J'ai essayé ce qui suit en utilisant l'allemand vcs2010-express
ajouter une référence avec DefaultVersion spécifique = False: pas de version
<Reference Include="Castle.Core">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
référence modifiée: SpecificVersion = True: version ajoutée
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
référence modifiée à nouveau: SpecificVersion = False: la version reste et nouvel élément 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>
Il semble que la version spécifique soit mémorisée mais ignorée à cause de <SpecificVersion>False</SpecificVersion>