【问题标题】:Where does the Xml Serializer store its dynamically generated code?Xml Serializer 将其动态生成的代码存储在哪里?
【发布时间】:2013-12-02 14:40:25
【问题描述】:

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

我想看看反汇编器中的这些类。

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

我从 Reflector 收集到的只是它存储在某个临时目录中。我查找了 C:\temp 但那里没有 .dll。我查了一下 C:\tmp ,那里有一些 PNG 文件,看起来它们不是真正的 PNG,而是一些由 Windows 生成的用于存储临时数据的二进制文件。

如果你知道,请告诉我。

【问题讨论】:

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


    【解决方案1】:

    好的,我查到的与这个问题有关的十几个线程中的这两个揭示了答案。

    这个帖子说它是文件夹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/

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

    ASP.NET Access to the temp directory is denied

    【讨论】:

      【解决方案2】:

      有一个简单的方法:使用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'.
      

      【讨论】:

      • 您的意思是sgenngen 用于原生图像。
      • 是的,这是一个错字。固定。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多