netstandard 2.0没有AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

时间:2017-09-14 18:46:23

标签: .net-standard-2.0

我刚刚使用{{order.CreatedOn.replace('/Date(','').replace(')/','') | date | relativeDate}} net451经典dotnet项目升级为多目标项目并取得了相当的成功。

但是,当通过以下方式获取对旧版配置文件的访问时,net461/netstandard2.0遇到了这个编译器错误:

net461

这似乎不是AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 中的问题:)任何人都知道任何工作或良好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

根据this article,我在寻找PlatformServices.Default.Application.ApplicationBasePath的替代品时发现,它应该是:

  • AppDomain.CurrentDomain.SetupInformation.ApplicationName
  • Assembly.GetEntryAssembly().GetName().Name

就像你一样,我刚刚发现第一个在最近的2.0中不存在,所以我将使用GetEntryAssembly名称。

..但是请记住,GetEntryAssembly在使用时可能是null,例如来自像xUnit这样的测试运行器,或者如果您的应用代码是从另一个不是您的主机上运行的话可能会出错启动模块等 - 因此不是完美的替代

答案 1 :(得分:0)

将ConfigurationManager添加为NuGet

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
  <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" />
</ItemGroup>

在C#中使用ConfigurationManager

var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
Log4NetLogger.Configure(configFile.FilePath);