我一直在尝试使用Remotesoft Linker和Mini Deployment工具从托管代码创建单个本机可执行文件(不需要安装框架)。它具有的可配置功能之一是csc.exe可用于最终的可执行文件。它的文档说它通常只在使用XML序列化时才需要(我)。我已经修改了我的构建过程以使用SGen来创建序列化程序集,并将结果添加到使用我的xml类的解决方案中的每个项目的引用。序列化类使它成为链接的.net可执行文件(所有.net dll组合成一个托管exe文件);所以我假设我已正确配置。
但是我的应用程序在运行时仍会尝试执行csc。我是否对序列化程序集做错了,导致它在运行时重新创建;或者我的应用程序正在做其他需要csc的事情,我该如何确定?
http://www.remotesoft.com/linker/
Generating an Xml Serialization assembly as part of my build
编辑:使用修改后的app.config完成一些测试,以保证序列化文件在生成时可见(通过撤消构建时生成进行测试);看来我之前确实已经正确创建了它们。除非框架的另一部分在运行时调用csc并且使用不同的标志将其结果取消隐藏,否则我认为RemoteSoft工具可能是罪魁祸首。我无法确定,因为输出可执行文件没有留下任何临时文件,即使它受到的app.config文件告诉它,它也是可见的。
我使用的app.info就是这个。在其他地方,我看到使用值为4的示例,但未能找到它们的行为之间的任何差异。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <switches> <add name="XmlSerialization.Compilation" value="1" /> </switches> </system.diagnostics> </configuration>
答案 0 :(得分:0)
虽然您已经生成了XML序列化程序集,但是有关Remotesoft Linker工作方式的内容可能意味着内置序列化框架可能无法识别它们。我不是说那是这样的,只是它是第一个停靠点。
我不知道序列化框架如何决定是否使用csc的细节 - 但这可能是首先要研究的内容。