好吧,用 Reflector 稍等片刻,在 System.Web 中的所有成员中搜索“临时”一词表明这个调用让我来到这里:
string str2 = AppManagerAppDomainFactory.ConstructSimpleAppName(AppDomainAppVirtualPath);
但后来我记得源代码可用于所有 .NET,所以我转向实际代码,而不是反射代码:https ://referencesource.microsoft.com/#System.Web/HttpRuntime.cs,870
稍后在该方法“SetupCodeGenDirectory”中,路径似乎是建立在上面的
this._codegenDir = Thread.GetDomain().DynamicDirectory;
因此,看起来该哈希来自 DynamicDirectory。这在http://referencesource.microsoft.com/#mscorlib/system/appdomain.cs#2792上,它看起来像是一些 COM Fusion Loader 内容中的 extern:
[ComImport,InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("7c23ff90-33af-11d3-95da-00a024a85b51")]
但是那个 GUID 把我带到这里http://referencesource.microsoft.com/#mscorlib/microsoft/win32/fusionwrap.cs#94
这意味着它是一个公钥令牌部分:
public const uint HASH_VALUE = PUBLIC_KEY_TOKEN + 1;
public const uint NAME = HASH_VALUE + 1;
那也许是NAME?我猜是yourAssembly.GetPublicKeyToken();
或者,只需在配置部分http://msdn.microsoft.com/en-us/library/system.web.configuration.compilationsection.tempdirectory%28VS.80%29中更改临时 ASP.NET 文件所在的文件夹。 web.config 中 system.web 中的aspx
<compilation tempDirectory="D:\MoveThemHere">