63 votes

comprendre une référence d'assemblage csproj

Je suis à l'aide de VS2010 et j'ai essayé d'ajouter un peu de montage de disque dur local pour mon projet C# par référence au fichier. Jeter un oeil dans le fichier csproj. J'ai trouvé parfois le fichier de référence apparaît comme

<Reference Include="name">

Cependant, parfois, il semble que

<Reference Include="name, Version=xxx, Culture=neutral, 
                                          processorArchitecture=MSIL">

Quelle est la cause de la différence?

Edit: Inspried par k3b réponse. J'ai fait un autre test. J'ai créé un nouveau projet de bibliothèque de classes.

  1. Ajouter un fichier de référence. La valeur initiale de Speicifc Version en Propertis volet est Faux.Le csporj fichier ressemble <Reference Include="Name"> <HintPath>...</HintPath> </Reference>
  2. Changement Speicifc Version en Propertis volet de Vrai. VS ajoute de la version dans l'attribut include. <Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
  3. Changement Speicifc Version en Propertis volet de Faux à nouveau. VS ajoute un élément enfant SpecificVersion. <Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False<Specific> </Reference>

Il semble donc que la règle est la suivante:

  • Lorsque la Version est présent dans d'Inclure l'attribut et il n'y a pas d' SpecificVersion des enfants de l'élément, le fichier de l'assemblée est configuré pour être Précis Version
  • L' SpecificVersion des enfants de l'élément n'est ajouté à la valeur False.

Edit 2: Merci pour k3b réponse. Nous faisons le même test en même temps.

Une chose que je ne comprends toujours pas:

  • Pour mon nouveau projet de test, si je supprime le fichier de référence et ajouter de nouveau, elle remonte format dans le point 1, qui est la valeur par défaut.
  • Pour mon projet, si je supprime le fichier de référence et l'ajouter à nouveau, je serai de retour format au point 3. Même si cela signifie également que la Version Spécifique n'est pas utilisé, je me demande pourquoi il ne retourne pas à formater dans le point 1.

29voto

k3b Points 5381

Référence de type que vous obtenez dépend de la façon dont vous lien de l'assemblée.

  • sélectionnez l'assembly référencé dans l'explorateur de projets
  • allez dans les propriétés de page

vous y trouverez un indicateur booléen "Version spécifique"

  • true signifie que: l'assemblée doit avoir version=xxx
  • false signifie: ignorer la version de l'assembly

(Je n'ai qu'un allemand-vs2010 de sorte que la traduction en anglais de l'allemand "Spezifische Version" peut être légèrement différent)

[mise à jour]

J'ai essayé les éléments suivants à l'aide vcs2010-express allemand

ajouter une référence à défaut SpecificVersion=False : pas de version

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

renvoi modifié: SpecificVersion=True : ajout de la version

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

renvoi modifié de nouveau: SpecificVersion=False : version reste l'élément nouveau et 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 est souvenu mais ignorede en raison de <SpecificVersion>False</SpecificVersion>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X