1

私の理解では、「参照の追加」を使用していくつかの 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 ファイルに入ります。ただし、コンパイラが参照が不要であると判断した場合、アセンブリ マニフェストには含まれません。

ありがとう!

4

1 に答える 1

0

コードで実際に使用されていないアセンブリまたはプロジェクト参照 (つまり、「*.csproj に参照または ProjectReference として格納」) は、生成されたアセンブリには含まれません。これは標準的な動作です。

Resharper などの一部のツールは、それらを削除するのに役立ちます。

于 2013-02-19T14:39:39.953 に答える