66

私は VS2010 を使用しており、ファイル参照を使用して、ローカル ハードディスクから C# プロジェクトにいくつかのアセンブリを追加しようとしました。ファイルをのぞいてみるcsprojと、ファイル参照が次のように表示されることがあります

<Reference Include="name">

ただし、次のように表示されることもあります

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

違いの原因は何ですか?


k3b の回答に触発されて、別のテストを行いました。新しいクラス ライブラリ プロジェクトを作成しました。

  1. ファイル参照を追加します。プロパティペインの[特定のバージョン]の初期値はFalseです。ファイルは次のようになりますcsproj

    <Reference Include="Name">
      <HintPath>...</HintPath>
    </Reference>
    
  2. プロパティペインの特定のバージョンTrueに変更します。VS は属性にバージョンを追加します。Include

    <Reference Include="Name, Version=...">
      <HintPath>...</HintPath>
    </Reference>
    
  3. プロパティペインの特定のバージョンを再度Falseに変更します。VS は子要素を追加します。SpecificVersion

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

したがって、ルールは次のようです。

  • バージョンInclude属性に存在し、子要素がない場合SpecificVersion、ファイル アセンブリは特定のバージョンとして構成されます。
  • 子要素にはSpecificVersionFalseのみが追加されます。

私がまだ理解していないことが1つあります:

  • 私の新しいテスト プロジェクトでは、ファイル参照を削除して再度追加すると、既定のポイント 1 の形式に戻ります。
  • 私の既存のプロジェクトでは、ファイル参照を削除して再度追加すると、ポイント 3 の形式に戻ります。特定のバージョンが使用されていないことも意味しますが、なぜポイント 1 の形式に戻らないのか疑問に思っています。 .
4

1 に答える 1