J'utilise VS2010 et j'ai essayé d'ajouter quelques assemblages à partir du disque dur local à mon projet C# par référence de fichier. Fureter dans le fichier csproj
, je trouve parfois la référence du fichier apparaît commeComprendre une référence d'assembly csproj
<Reference Include="name">
Cependant parfois, il apparaît comme
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Quelle est la cause de 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 classes.
Ajouter une référence de fichier. La valeur initiale de Version spécifique dans Les propriétés volet est Faux. Le regard du fichier
csproj
comme<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
changement version spécifique dans Propriétés volet pour vrai. VS ajoute la version dans l'attribut
Include
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
changement version spécifique dans Propriétés volet à 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 est:
- Lorsque version est présent dans Inclure attribut et il n'y a aucun élément de l'enfant
SpecificVersion
, l'ensemble de fichier est configuré pour être Version spécifique - L'élément enfant
SpecificVersion
est uniquement ajouté avec la valeur Faux.
Une chose que je ne comprends toujours pas:
- Pour mon nouveau projet de test, si je retire la référence du fichier et l'ajouter à nouveau, il remonte au format au point 1, qui est le défaut.
- Pour mon projet existant, si je supprime la référence du fichier et la rajoute, je récupère le format au point 3. Bien que cela signifie également que la version spécifique n'est pas utilisée, je me demande pourquoi elle ne retourne pas au format au point 1.
êtes-vous sûr? Dans mon VS2010, 'SpecificVersion' est un enfant de l'élément' Reference'. Cela n'a aucun impact sur ' ' autre que les attributs sont ignorés. –
J'ai fait un test. La version spécifique est initialement False. J'ai ensuite édité manuellement le fichier csproj pour supprimer les informations de version. Et puis j'ai changé la version spécifique à True. J'ai observé que VS inséré les informations de version. Il semble donc que cela soit en quelque sorte lié à la version spécifique. Cependant, je me demande maintenant pourquoi VS ne se souvient pas de mon dernier changement. Même si je réinitialise Version Spécifique à False et supprime et readd la référence d'assembly, les informations de version sont toujours insérées. – intangible02
Je confirme vos observations. Mis à jour la réponse en conséquence. – k3b