了解DLL地狱

时间:2016-06-24 09:00:13

标签: c# .net visual-studio dll

我无法理解Visual Studio将依赖项解析为.NET dll的机制。在某些.csproj文件中,我有一些依赖关系如下。

<Reference Include="SomeDependency,
                    Version=SomeVersion,
                    Culture=neutral,
                    PublicKeyToken=SomePublicKeyToken,
                    processorArchitecture=MSIL">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>SomeHintPath</HintPath>
</Reference>

但是,HintPath指向了无效路径,但Visual Studio能够根据需要构建和部署项目,显然是从其他地方的获取dll 。在我的情况下,这不是一个主要问题,因为最终结果是所希望的,但我最终不了解哪个机制依赖于.NET dll得到解决。

如何在构建Visual Studio项目时找出实际引用的dll? dll允许的位置是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码确定所有已加载的程序集,并检查它们的路径:

AppDomain ad = AppDomain.CurrentDomain;
Assembly[] loadedAssemblies = ad.GetAssemblies();

Console.WriteLine("Here are the assemblies loaded in this appdomain\n");
foreach (Assembly a in loadedAssemblies)
{
    Console.WriteLine(a.FullName);
}

来自帖子(Determine Loaded Assemblies

以下是&#34;运行时如何找到程序集&#34;

的文档

https://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.110).aspx