了解 csproj 程序集参考 [英] Understanding a csproj assembly reference

查看:26
本文介绍了了解 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">

但有时它显示为

<Reference Include="name, Version=xxx, Culture=neutral, 
                                          processorArchitecture=MSIL">

是什么导致了差异?

受到 k3b 回答的启发,我又做了一个测试.我创建了一个新的类库项目.

Inspired by k3b's answer, I did another test. I created a new class library project.

  1. 添加文件引用.Properties 窗格中 Specific Version 的初始值为 False.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>

  • 属性窗格中的特定版本更改为True.VS 在 Include 属性中添加版本.

  • Change Specific Version in Properties pane to True. VS adds version in the Include attribute.

    <Reference Include="Name, Version=...">
      <HintPath>...</HintPath>
    </Reference>
    

  • 再次将属性窗格中的特定版本更改为False.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</SpecificVersion>
    </Reference>
    

  • 所以看起来规则是:

    • Version 存在于 Include 属性中并且没有 SpecificVersion 子元素时,文件程序集被配置为特定版本
    • SpecificVersion 子元素仅附加值 False.
    • 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 表示:程序集必须具有 version=xxx
    • false 表示:忽略程序集版本

    (我只有一个 German-vs2010,所以德语Spezifische 版本"的英文翻译可能略有不同)

    (I only have a german-vs2010 so the english translation for the german "Spezifische Version" may be slightly different)

    [更新]

    我使用 vcs2010-express German 尝试了以下操作

    I tried the following using vcs2010-express german

    使用默认SpecificVersion=False添加引用:无版本

    <Reference Include="Castle.Core">
      <HintPath>......libfluentNHibernateCastle.Core.dll</HintPath>
    </Reference>
    

    修改参考:SpecificVersion=True:添加版本

    <Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
      <HintPath>......libfluentNHibernateCastle.Core.dll</HintPath>
    </Reference>
    

    再次修改引用:SpecificVersion=False:版本保持不变,新元素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>......libfluentNHibernateCastle.Core.dll</HintPath>
      <SpecificVersion>False</SpecificVersion>
    </Reference>
    

    似乎记住了特定版本但忽略了因为False

    It seems that the specific version is remembered but ignorede because of <SpecificVersion>False</SpecificVersion>

    这篇关于了解 csproj 程序集参考的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆