我的理解是,如果我使用“Add refenrce”将一些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 failed to keep consistent DLL version in *.csproj file and assembly manifest, a VS2012 bug?
在上面,我说我从参考列表中删除了它们,但项目甚至不会构建。这不是真的。
我删除了程序集清单中未提及的DLL引用,该项目仍然构建良好。 这些信息也会从* .csproj文件中删除。
所以我认为我们可以在项目中添加一些不必要的引用,这些信息将进入* .csproj文件。但如果编译器认为引用是不必要的,它将 NOT 进入程序集清单。
谢谢!
答案 0 :(得分:0)
生成的程序集中不包含未在代码中实际使用的程序集或项目引用(即“存储在* .csproj中作为Reference或ProjectReference”)。这是一种标准行为。
像Resharper这样的工具可以帮助您删除它们。