C# 理解csproj组件参考
我正在使用VS2010,我试图通过文件引用将一些程序集从本地硬盘添加到我的C#项目中。查看C# 理解csproj组件参考,c#,visual-studio-2010,reference,.net-assembly,csproj,C#,Visual Studio 2010,Reference,.net Assembly,Csproj,我正在使用VS2010,我试图通过文件引用将一些程序集从本地硬盘添加到我的C#项目中。查看csproj文件,我发现有时文件引用显示为 <Reference Include="name"> <Reference Include="name, Version=xxx, Culture=neutral, processorArchitecture=MSIL"> 将“属性”窗格中的特定版本
csproj
文件,我发现有时文件引用显示为
<Reference Include="name">
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Include
属性中添加版本
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
</Reference>
- 当Include属性中存在版本并且没有
子元素时,文件程序集被配置为特定版本SpecificVersion
子元素仅附加值FalseSpecificVersion
- 对于我的新测试项目,如果我删除文件引用并再次添加它,它将返回到点1中的格式,这是默认值
- 对于我现有的项目,如果我删除文件引用并再次添加它,我将在第3点中恢复格式。虽然这也意味着没有使用特定的版本,但我想知道为什么它没有回到第1点中的格式
- 在项目资源管理器中选择引用的程序集
- 转到属性页
- true表示:程序集的版本必须为xxx
- false表示:忽略程序集版本
<Reference Include="Castle.Core">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
..\..\..\lib\fluentNHibernate\Castle.Core.dll
修改的参考: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>
..\..\..\lib\fluentNHibernate\Castle.Core.dll
再次修改引用: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>
..\..\..\lib\fluentNHibernate\Castle.Core.dll
假的
似乎特定版本已被记住,但由于
False
而忽略,您确定吗?在我的VS2010中,SpecificVersion
是元素引用的子元素。Is对
没有影响,其他属性被忽略。我做了一个测试。特定版本最初为False。然后我手动编辑csproj文件以删除版本信息。然后我将特定版本更改为True。我注意到VS插入了版本信息。所以它似乎与特定的版本有某种联系。然而,我现在想知道为什么VS不记得我上次的改变。即使我将特定版本重置为False并删除并读取程序集引用,版本信息仍然插入。我确认您的观察结果。相应地更新了答案。对于依赖于其他项目的项目,我注意到以下内容:“继承的”/“可传递的dll依赖项被引用,版本和特定设置为false,而直接设置的dll依赖项没有任何版本信息。
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
<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>