我们的可执行文件是针对 .NET 3.5 编译的。我们不拥有源代码,因此无法重新编译它。因此,为了让它与 .NET 4.0 一起运行,我们将其添加到配置文件中,每页:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
现在,我们得到一个似乎与配置文件相关的错误:
我怀疑 .NET 4.0 不喜欢我们相当复杂的配置文件。为了验证这一点,我做了以下事情:
- 创建了一个空白的 .NET 3.5 WinForms exe
- 如上所示,将supportedRuntime 添加到配置中
- 使用进程资源管理器验证它是否与 .NET 4.0 DLL 一起运行。
我开始简化复杂的配置文件以缩小问题范围,到目前为止,我已经把它搞定了。有谁知道是什么问题?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" />
</startup>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>
<spring>
<context type="Spring.Context.Support.XmlApplicationContext, Spring.Core" name="Default">
<resource uri="config://spring/objects" />
</context>
<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd" default-lazy-init="true">
<object id="Foo1" type="Foo.Bar1, Foo.Bar">
<description>lorem ipsum</description>
</object>
<object id="Foo2" singleton="false" type="Foo.Bar2, Foo.Bar">
<description>lorem ipsum</description>
</object>
<object id="Foo3" singleton="false" type="Foo.Bar3, Foo.Bar">
<description>lorem ipsum</description>
</object>
<object id="Foo4" type="Foo.Bar4, Foo.Bar">
<description>lorem ipsum</description>
</object>
<object id="Foo5" type="Foo.Bar5, Foo.Bar">
<description>
lorem ipsum
</description>
<constructor-arg>
<list element-type="Foo.IBar5, Foo.Bar">
<ref object="Foo4" />
</list>
</constructor-arg>
</object>
</objects>
</spring>
</configuration>