为什么我的应用程序在执行期间使用 CSC

发布于 2024-07-16 08:34:37 字数 1205 浏览 10 评论 0原文

我一直在尝试使用 Remotesoft Linker 和 Mini Deployment 工具从我的托管代码创建单个本机可执行文件(不需要安装框架)。 它具有的可配置功能之一是 csc.exe 是否可用于最终可执行文件。 它的文档说,通常只有在使用 XML 序列化时才需要它(我是)。 我修改了构建过程以使用 SGen 创建序列化程序集,并将结果添加到使用 xml 类的解决方案中每个项目的引用中。 序列化类将其放入链接的 .net 可执行文件中(所有 .net dll 组合成单个托管 exe); 所以我假设我已经正确配置了。

但是,我的应用程序在运行时仍然尝试执行 csc。 我是否对序列化程序集做错了什么,导致它在运行时重新创建? 或者我的应用程序是否正在执行其他需要 csc 的操作,我如何确定什么?

http://www.remotesoft.com/linker/

生成 Xml 序列化程序集作为我的构建的一部分

编辑:使用修改 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>

I've been experimenting with the Remotesoft Linker and Mini Deployment tools to create a single native executable (that doesn't need the framework installed) from my managed code. One of the configurable features it has is if csc.exe is available for the final executable. The documentation for it says that it's typically only needed if using XML serialization (I am). I've modified my build process to use SGen to create the serialization assembly, and added the result to the references of each project in the solution that uses my xml classes. The serialization classes are making it into the linked .net executable (all .net dlls combined into a single managed exe); so I assume I have that configured properly.

However my app still attempts to execute csc when it runs. Am I doing something wrong with the serialization assembly, resulting in it being recreated at runtime; or is my app doing something else that requires csc, and how do I determine what?

http://www.remotesoft.com/linker/

Generating an Xml Serialization assembly as part of my build

Edit: Done some testing with a modified app.config to keep the serialization files visible if generated (tested by undoing the build time generation); and it appears that I did have them properly created before. Unless there's a different part of the framework that invokes csc at runtime and which has its results unhidden using a different flag I think the RemoteSoft tool is probably to blame. I can't be certain though because the output executable doesn't leave any temps it creates visible even if the app.config file it injested told it to.

The app.info I used was this. Elsewhere I saw examples using a value of 4, but haven't been able to find any difference between their behavior.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.diagnostics>
      <switches>
         <add name="XmlSerialization.Compilation" value="1" />
      </switches>
   </system.diagnostics>
</configuration>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜司空 2024-07-23 08:34:37

虽然您已经生成了 XML 序列化程序集,但 Remotesoft Linker 的工作方式可能意味着内置序列化框架可能无法识别它们。 我并不是说情况确实如此,只是说这是第一个停靠点。

我不知道序列化框架如何决定是否使用 csc 的详细信息 - 但这可能是首先要调查的事情。

It's possible that although you've generated the XML serialization assemblies, something about the way the Remotesoft Linker works means that the built-in serialization framework may not recognise them. I'm not saying that's the case, just that it's a first port of call.

I don't know the details of how the serialization framework decides whether to use csc or not - but that would probably be the first thing to investigate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文