问题描述
我使用VS2010,我试图通过文件引用来自本地硬盘的几个组件添加到我的C#项目。窥视到的csproj
文件,我发现有时文件引用显示为
I am using VS2010 and I tried to add a few assemblies from local hard disk to my C# project through file reference. Peeking into the csproj
file, I found sometimes the file reference appears as
<Reference Include="name">
不过有时显示为
However sometimes it appears as
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
可能会导致什么区别?
What could cause the difference?
通过K3B的回答启发,我做了另一个试验。我创建了一个新的类库项目。
Inspired by k3b's answer, I did another test. I created a new class library project.
-
添加文件引用。的初始值的特定版本的中的属性的窗格的假的。在
的csproj
文件看起来像
Add a file reference. The initial value of Specific Version in Properties pane is False. The
csproj
file look like
<Reference Include="Name">
<HintPath>...</HintPath>
</Reference>
更改的特定版本的中的属性窗格中的真正的。 。VS加在包含
属性版本
Change Specific Version in Properties pane to True. VS adds version in the Include
attribute.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
</Reference>
更改的特定版本的中的属性窗格中的假的一次。 。VS增加了一个子元素 SpecificVersion
Change Specific Version in Properties pane to False again. VS adds a child element SpecificVersion
.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
<SpecificVersion>False<Specific>
</Reference>
如此看来,规则是:
- 在当前的版本的存在的包括的属性并没有
SpecificVersion
子元素,该文件组件配置为特定版本 - 的
SpecificVersion
子元素只附有价值的假的
- When Version is present in Include attribute and there is no
SpecificVersion
child element, the file assembly is configured to be Specific Version - The
SpecificVersion
child element is only appended with value False.
有一件事我还是不明白:
One thing I still do not understand:
- 对于我的新的测试项目,如果删除了文件参考,并再次添加它,它可以追溯到格式1点,这是默认的。
- 对于我现有的项目,如果我删除文件参考,并再次添加它,我取回3点。格式虽然这也意味着,特定版本不使用,我想知道为什么它不回去格式点1。
推荐答案
哪些引用类型你取决于你如何链接装配上。
Which reference-type you get depends on how you link the assembly.
- 选择项目资源管理器中引用的程序集
- 转到属性页
有你找到一个布尔标志特定版本
there you find a boolean flag "specific Version"
- true表示:该程序集必须具有版本= XXX
- false表示:忽略程序集的版本
(我只有德国VS2010所以英文翻译为德国Spezifische版本可能略有不同)
(I only have a german-vs2010 so the english translation for the german "Spezifische Version" may be slightly different)
[更新]
我尝试以下使用带有vcs2010-Express的德语
I tried the following using vcs2010-express german
添加引用默认SpecificVersion =假:无版本
<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 =假:版本仍然与新元素SpecificVersion
modified reference again: SpecificVersion=False : version remains and new element 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>
看来,具体的版本被记住,但因为<的ignorede; SpecificVersion>假LT; / SpecificVersion>
这篇关于理解的csproj集引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!