我正在使用 VS2010,我尝试通过文件引用将一些程序集从本地硬盘添加到我的 C# 项目中。窥视csproj
文件,我发现有时文件引用显示为
<Reference Include="name">
但是有时它显示为
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
什么可能导致差异?
受 k3b 回答的启发,我又做了一次测试。我创建了一个新的类库项目。
添加文件引用。属性窗格中特定版本的初始值为False。该文件看起来像
csproj
<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
将属性窗格中的特定版本更改为True。VS 在属性中添加版本。
Include
<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
再次将属性窗格中的特定版本更改为False。VS 添加了一个子元素。
SpecificVersion
<Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
所以似乎规则是:
- 当包含属性中存在版本并且没有子元素时,文件程序集配置为特定版本
SpecificVersion
- 子
SpecificVersion
元素仅附加值False。
我仍然不明白的一件事:
- 对于我的新测试项目,如果我删除文件引用并重新添加它,它会回到第 1 点中的格式,这是默认设置。
- 对于我现有的项目,如果我删除文件引用并重新添加它,我会在第 3 点恢复格式。虽然这也意味着未使用特定版本,但我想知道为什么它不会回到第 1 点的格式.