System.Reflection.Assembly.GetExecutingAssembly。我到底在看什么?

时间:2015-04-14 02:00:58

标签: c# asp.net-mvc-5

我一直试图获得以下任何一个目录:

  • 解决方案文件夹的根目录
  • 启动项目文件夹

我遇到了这个:

System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location );

但我不确定它实际上向我展示了什么。

例如,

我想要的文件夹是:

C:\Users\James\Documents\Visual Studio 2013\Projects\Test\Test.WebUI\Uploads

以上函数返回:

C:\Users\James\AppData\Local\assembly\dl3\1RC2V770.35T\WML2RQJT.GX5\9ebc1d95\b8f9a830_5676d001

这对我有帮助吗?

问题的背景是我正在运行实体框架播种器,需要访问启动项目文件夹结构。

1 个答案:

答案 0 :(得分:1)

您看到的是.NET用于缓存的卷影副本文件夹。它在Windows注册表中HKCU\Software\Microsoft\Fusion\DownloadCacheLocation下指定。 Shadow copying是.NET框架中的一项功能,允许在不卸载应用程序域的情况下更新应用程序域中使用的程序集。

有一个类似的问题here

这就是您无法使用System.Reflection.Assembly.GetExecutingAssembly().Location

检索原始文件夹位置的原因

如果要更改/读取存储dll的目录,可能需要查看AppDomainSetup.ShadowCopyDirectories

希望有所帮助