Где Xml Serializer хранит свой динамически сгенерированный код?

Сериализатор XML в System.Xml.Serialization пространство имен генерирует XmlSerializationReader а также XmlSerializationWriter классы динамически с использованием CodeDOM.

Я хочу взглянуть на эти классы в дизассемблере.

Где сериализатор хранит временный файл сборки, содержащий этот динамически генерируемый код? Последние 30 минут я пытался найти его в Reflector, но безрезультатно.

Все, что я собираю из Reflector, это то, что он хранит его в некотором временном каталоге. Я посмотрел C:\temp, но там нет.dll. Я посмотрел C:\tmp, и там есть несколько файлов PNG, которые кажутся не настоящими PNG, а некоторыми двоичными файлами, сгенерированными Windows для хранения временных данных.

Если вы знаете, пожалуйста, скажите мне.

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'.

Хорошо, эти две темы из дюжины или около того, относящиеся к этой проблеме, которые я посмотрел, раскрывают ответ.

Этот поток говорит, что это папка 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 может быть найдена путем вызова System.IO.Path.GetTempPath() где dll сохраняется.

ASP.NET Доступ к временному каталогу запрещен

Другие вопросы по тегам