本文介绍了理解的csproj集引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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.


  1. 添加文件引用。的初始值的特定版本的中的属性的窗格的的。在的csproj 文件看起来像

  1. 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集引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    09-03 02:21