VS2010を使用しており、ファイル参照を介してローカルハードディスクからC#プロジェクトにいくつかのアセンブリを追加しようとしました。 csproj
ファイルを覗いてみると、ファイル参照が次のように表示されることがあります。
<Reference Include="name">
しかし、時々それは
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
違いの原因は何ですか?
K3bの答えに触発されて、別のテストを行いました。新しいクラスライブラリプロジェクトを作成しました。
ファイル参照を追加します。 特定のバージョン in Propertiesペインの初期値はFalseです。 csproj
ファイルは次のようになります
<Reference Include="Name">
<HintPath>...</HintPath>
</Reference>
プロパティペインの特定のバージョンをTrueに変更します。 VSは、Include
属性にバージョンを追加します。
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
</Reference>
特定のバージョン in PropertiesペインをFalseに再度変更します。 VSは子要素SpecificVersion
を追加します。
<Reference Include="Name, Version=...">
<HintPath>...</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
そのため、ルールは次のようになります。
SpecificVersion
子要素がない場合、ファイルアセンブリは特定のバージョンに設定されますSpecificVersion
子要素には、値Falseのみが追加されます。私がまだ理解していないこと:
どの参照タイプを取得するかは、アセンブリのリンク方法によって異なります。
ブールフラグ「特定のバージョン」があります
(私はgerman-vs2010しか持っていないので、ドイツ語の "Spezifischeバージョン"の英語の翻訳は若干異なる場合があります)
[更新]
Vcs2010-expressドイツ語を使用して以下を試しました
default SpecificVersion = Falseで参照を追加:バージョンなし
<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 = 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>
特定のバージョンは記憶されているようですが、<SpecificVersion>False</SpecificVersion>