【发布时间】:2013-05-10 20:06:25
【问题描述】:
我正在使用 VS2010,我尝试通过文件引用将一些程序集从本地硬盘添加到我的 C# 项目中。查看csproj 文件,我发现有时文件引用显示为
<Reference Include="name">
但有时它会显示为
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
什么可能导致差异?
受 k3b 回答的启发,我又做了一次测试。我创建了一个新的类库项目。
-
添加文件引用。 Properties 窗格中Specific Version 的初始值为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>
所以看来规则是:
- 当 Version 存在于 Include 属性中且没有
SpecificVersion子元素时,文件程序集配置为特定版本 -
SpecificVersion子元素仅附加值 False。
有一件事我还是不明白:
- 对于我的新测试项目,如果我删除文件引用并重新添加它,它会回到第 1 点中的格式,这是默认设置。
- 对于我现有的项目,如果我删除文件引用并重新添加它,我会在第 3 点返回格式。虽然这也意味着未使用特定版本,但我想知道为什么它不回到格式在第 1 点。
【问题讨论】:
标签: c# visual-studio-2010 reference .net-assembly csproj