【发布时间】:2016-02-01 22:03:54
【问题描述】:
这里有很多关于找出安装了什么 .NET 框架的问题。 我知道我已经安装了 .NET v4.6.1。
我想了解某个服务是基于哪个版本的 .NET 构建的。
假设我安装了 .NET v2.0 的服务 (XYZ.exe)。我对代码进行了更改并生成了另一个同名但使用 .NET v4.6.1 的可执行文件,并替换现有的可执行文件(在停止服务后)。当我重新启动服务时,该服务会使用新的可执行文件 (.NET v4.6.1) 还是有它使用的旧可执行文件 (.NET v2.0) 的预加载代码?
【问题讨论】:
-
可执行文件将使用构建时目标框架的版本。所以如果你在 4.6.1 中构建它,那就是它的版本。
-
通过@Tim 的响应 - 您应该会看到您的 app.config (exe.config) 已更新,以反映支持的运行时中的适当 .NET 版本。还有其他因素取决于您的代码是否实际上针对具有文件路径的特定文件和库(禁止,但可能)。
-
再一次,伙计们,我知道这一切。但这是针对可执行文件的。我需要知道更改可执行文件是否会对服务使用的代码产生任何更改。
-
我认为您没有正确解释您的真正问题。您是否担心“重启”不会从内存中卸载可执行代码?该服务保留文件的缓存副本并且不会使用您替换的文件?服务元数据会记住 .NET 版本并尝试使用旧版本而不是新程序集引用的版本?您是否真的看到加载了错误的版本,或者您正试图为麻烦做准备?
-
简单明了。给定任何 Windows 服务,而不考虑重新启动计算机或其他任何东西,您如何知道该服务使用哪个版本的 .NET?假设可执行文件定期更改,因此您不能信任可执行文件的版本。
标签: c# .net windows c#-4.0 service