私の理解では、「参照の追加」を使用していくつかの DLL をプロジェクトに追加すると、これらの参照情報は以下のように *.csproj ファイルに保存され、コンパイル後にアセンブリ マニフェストに保存する必要があります。
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
また、これらの情報はアセンブリ メタデータ マニフェストに反映される必要があり、ILDasm.exe で確認できます。
しかし、一部の参照 DLL は *.csproj ファイルにのみ表示され、アセンブリ マニフェストには表示されないことに気付きました。
そのような:
*.csproj には、次のものがあります。
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Microsoft.VisualStudio.TestTools.UITest.Common.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Microsoft.VisualStudio.TestTools.UITest.Extension.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=11.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Microsoft.VisualStudio.TestTools.UITesting.dll</HintPath>
</Reference>
しかし、アセンブリ マニフェストでは、これだけが表示されます。
.assembly extern Microsoft.VisualStudio.TestTools.UITesting
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 11:0:0:0
}
.assembly extern Microsoft.VisualStudio.TestTools.UITest.Extension
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 11:0:0:0
}
マニフェストにいくつかのアセンブリが表示されなかったため、それらを参照リストから削除しましたが、プロジェクトはビルドさえしません。
.NET CLR について誤解しているものはありますか?
VS2012 は、* . csproj ファイルとアセンブリ マニフェストで一貫した DLL バージョンを保持できませんでした。VS2012 のバグですか?
アップデート
上記で、それらを参照リストから削除したと言いましたが、プロジェクトはビルドさえしません。本当じゃない。
アセンブリ マニフェストに記載されていない DLL 参照を削除しましたが、プロジェクトは引き続き正常にビルドされます。また、これらの情報は *.csproj ファイルからも削除されます。
そのため、プロジェクトに不要な参照を入れることができると思います。これらの情報は*.csproj ファイルに入ります。ただし、コンパイラが参照が不要であると判断した場合、アセンブリ マニフェストには含まれません。
ありがとう!