Xml Serializer在哪里存储其动态生成的代码?

时间:2013-12-02 14:40:25

标签: xml-serialization xmlserializer codedom system-codedom-compiler

System.Xml.Serialization命名空间中的XML序列化程序使用 CodeDOM 动态生成XmlSerializationReaderXmlSerializationWriter类。

我想在反汇编程序中查看这些类。

序列化程序在哪里存储具有此动态生成代码的临时程序集文件?我一直试图在Reflector的最后30分钟找到它,但无济于事。

我从Reflector收集的是它将它存储在某个临时目录中。我抬头看了 C:\ temp ,但那里没有.dll。我查了 C:\ tmp 并且有些PNG文件似乎不是真正的PNG文件,而是Windows生成的一些二进制文件,用于存储临时数据。

如果您知道,请告诉我。

2 个答案:

答案 0 :(得分:0)

好吧,我查找的关于这个问题的十几个左右的线索揭示了答案。

这个帖子说是文件夹 C:\ Windows \ ServiceProfiles \ NetworkService \ AppData \ Local \ Temp

http://snavin.wordpress.com/2013/04/01/xmlserializer-is-running-does-not-have-sufficient-permission-to-access-the-temp-directory/

但是从这个帖子的原始问题中发布的堆栈跟踪看来,可以通过调用System.IO.Path.GetTempPath()找到的windows环境的临时文件夹是dll的保存位置。

ASP.NET Access to the temp directory is denied

答案 1 :(得分:0)

有一种简单的方法:使用sgen.exe自行生成必要的装配。

在我的机器上看起来像:

C:>"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sgen.exe" "C:\Projects\BIN\My.dll"
Microsoft (R) Xml Serialization support utility
[Microsoft (R) .NET Framework, Version 4.6.1055.0]
Copyright (C) Microsoft Corporation. All rights reserved.
Serialization Assembly Name: My.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
Generated serialization assembly for assembly c:\projects\bin\My.dll --> 'c:\projects\bin\My.XmlSerializers.dll'.