我一直在尝试使用 Remotesoft Linker 和 Mini Deployment 工具从我的托管代码创建单个本机可执行文件(不需要安装框架)。它具有的可配置功能之一是 csc.exe 是否可用于最终可执行文件。它的文档说它通常只在使用 XML 序列化时才需要(我是)。我修改了构建过程以使用 SGen 创建序列化程序集,并将结果添加到使用我的 xml 类的解决方案中每个项目的引用中。序列化类使其成为链接的 .net 可执行文件(所有 .net dll 组合成一个托管 exe);所以我假设我已经正确配置了。
但是,我的应用程序在运行时仍会尝试执行 csc。我是否对序列化程序集做错了什么,导致它在运行时重新创建;或者我的应用程序是否在做其他需要 csc 的事情,我该如何确定?
http://www.remotesoft.com/linker/
编辑:使用修改后的 app.config 进行一些测试,以保持序列化文件在生成时可见(通过撤消构建时间生成进行测试);看来我之前确实已经正确创建了它们。除非框架的不同部分在运行时调用 csc 并且使用不同的标志不隐藏其结果,否则我认为 RemoteSoft 工具可能是罪魁祸首。我不能确定,因为即使它注入的 app.config 文件告诉它,输出可执行文件也不会留下它创建的任何临时文件。
我使用的 app.info 是这个。在其他地方,我看到了使用值 4 的示例,但无法找到它们的行为之间的任何区别。
<?xml 版本="1.0" 编码="utf-8" ?> <配置> <系统诊断> <开关> <add name="XmlSerialization.Compilation" value="1" /> </开关> </system.diagnostics> </配置>