int*_*e02 63 c# reference csproj visual-studio-2010 .net-assembly
我正在使用VS2010,我试图通过文件引用从本地硬盘添加一些程序集到我的C#项目.窥视csproj文件,我发现有时文件引用显示为
<Reference Include="name">
Run Code Online (Sandbox Code Playgroud)
但有时它看起来像
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Run Code Online (Sandbox Code Playgroud)
什么可能导致差异?
受到k3b答案的启发,我做了另一个测试.我创建了一个新的类库项目.
添加文件引用.的初始值特定版本的属性面板是假.该csproj文件看起来像
<Reference Include="Name">
<HintPath>...</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)更改特定版本的属性窗格真.VS在Include属性中添加版本.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)更改特定版本的属性窗格中假一次.VS添加了一个子元素SpecificVersion.
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
Run Code Online (Sandbox Code Playgroud)所以似乎规则是:
SpecificVersion子元素,该文件组件被配置为特定版本SpecificVersion子元素只与价值附加假.有一点我还是不明白:
k3b*_*k3b 29
您获得的参考类型取决于您如何链接程序集.
在那里你找到一个布尔标志"特定版本"
(我只有德语vs2010所以德语"Spezifische版本"的英文翻译可能略有不同)
[更新]
我尝试使用vcs2010-express german进行以下操作
添加默认的引用SpecificVersion = False:没有版本
<Reference Include="Castle.Core">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
修改后的参考: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>
Run Code Online (Sandbox Code Playgroud)
再次修改引用: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>
Run Code Online (Sandbox Code Playgroud)
似乎特定的版本被记住但是因为而忽略了 <SpecificVersion>False</SpecificVersion>