小编Ofi*_*r H的帖子

UseLegacyPathHandling 未从 app.config 运行时元素正确加载

我正在尝试在我的应用程序中使用新的长路径支持。为了使用它,而不强迫客户在其计算机上安装最新的 .NET 4.6.2 版本,只需将这些元素添加到他的 app.config 中(有关更多信息,请参阅链接https://blogs.msdn。 microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/):

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/>
</startup>
<runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false" />
</runtime>
Run Code Online (Sandbox Code Playgroud)

当我在我的执行项目中使用它时,它工作得很好。问题出在我的测试项目(使用 Nunit)中。我已将 app.config 添加到我的测试项目中,就像将其添加到执行项目中一样。

使用 ConfigurationManager 类,我设法确保应用程序配置确实已加载(简而言之:使用我能够在单元测试中检索的应用程序设置)。

使用 ConfigurationManager.GetSection("runtime"),我什至设法确保运行时元素已正确加载(_rawXml 值与 app.config 中的值相同)。

但是(!)由于某种原因,应用程序配置运行时元素不会影响 UseLegacyPathHandling 变量,因此我所有具有长路径的调用都会失败。

我想这个问题在某种程度上与以下事实有关:测试项目变成了使用 Nunit 引擎加载的 dll,Nunit 引擎是执行入口点。

我在另一个项目中遇到了完全相同的问题,该项目是由 Office Word 应用程序加载的 dll。我相信这两种情况下的问题是相同的,并且源于项目并不意味着成为执行切入点这一事实。

重要的是要明白,我无法访问自己的执行(Word Office 或 Nunit),因此我无法自己配置它们。

是否有一个选项可以以某种方式使 AppContextSwitchOverrides 从头开始​​动态加载?其他想法将受到欢迎。

asp.net-4.5 .net-4.6.2

3
推荐指数
1
解决办法
1968
查看次数

标签 统计

.net-4.6.2 ×1

asp.net-4.5 ×1