更改 XmlSerializer 输出临时程序集的位置
Posted
技术标签:
【中文标题】更改 XmlSerializer 输出临时程序集的位置【英文标题】:Changing where XmlSerializer Outputs Temporary Assemblies 【发布时间】:2011-03-19 04:20:43 【问题描述】:我正在尝试,因此我正在关注此类教程
http://www.hanselman.com/blog/ChangingWhereXmlSerializerOutputsTemporaryAssemblies.aspx
当我添加时
<system.xml.serialization>
<xmlSerializer tempFilesLocation="c:\\foo"/>
</system.xml.serialization>
我得到 tempFileLocation 不是有效属性。我正在使用 .net 4.0
名字改了还是怎么的?
【问题讨论】:
【参考方案1】:您使用的是哪个版本的 .NET Framework?此未记录的功能仅在 Framework 2.0 的更新中引入,因此可能是您尚未获得所有更新?
这里是有关更新的 MS 支持网站的链接 http://support.microsoft.com/kb/934529
更新:我使用 VS2010 Framework 4.0 对此进行了测试。由于架构不包含此属性,IDE 确实显示以下警告。
Warning 13 The 'tempFilesLocation' attribute is not allowed.
我运行并编译了代码,它运行良好。这是我使用的配置文件。
<?xml version="1.0"?>
<configuration>
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="1" />
</switches>
</system.diagnostics>
<system.xml.serialization>
<xmlSerializer tempFilesLocation="c:\foo"/>
</system.xml.serialization>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
【讨论】:
我检查了反射器并且读取 tempFilesLocation 的代码在那里,所以它应该工作。明天我会在我的开发机器上检查以确认它是否正常工作。但请记住,这是未记录的功能,因此即使它今天有效,明天也可能不再有效。 是的,很可能,这种行为只是 Visual Studio 用于解析 web.config 的 XML 架构中的一个故障/遗漏 - 不会是第一个! @ChrisTaylor,我刚试过这个......它只将 .dll 和 .pdb 转储到 c://foo 文件夹中,而不转储 .cs 文件。知道为什么吗? (我用的是VS2012) 没关系,我明白了。在 VS2012(或更确切地说是 .NET4.5)中,xmlSerializer 元素必须具有另一个属性useLegacySerializerGeneration="true"
才能生成 .cs 文件以上是关于更改 XmlSerializer 输出临时程序集的位置的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio - 更改 NuGet 的临时文件输出目录