我正在使用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 。有一点我还是不明白:
答案 0 :(得分:28)
您获得的参考类型取决于您如何链接程序集。
你找到一个布尔标志“特定版本”
(我只有德语vs2010所以德语“Spezifische版本”的英文翻译可能略有不同)
[更新]
我使用vcs2010-express german
尝试了以下操作使用默认的SpecificVersion = False 添加引用:无版本
<Reference Include="Castle.Core">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
修改后的参考: SpecificVersion = True :添加版本
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
再次修改引用: SpecificVersion = False :版本保留并且新元素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>
由于<SpecificVersion>False</SpecificVersion>