如何在.NET Framework,.NET Standard和.NET Core项目之间使用相同的配置?

时间:2017-09-05 21:32:54

标签: asp.net .net asp.net-core .net-standard

由于.NET Standard中不存在Network.findOneAndUpdate({ "network.stations.id": req.params.station_Id }, { "network.stations.$.free_bikes": req.body.free_bikes }, { new: true, fields: "network.stations" }, (err, doc) => console.log(doc)) // I want doc to somehow point only to a single station instead of // several stations like it currently does. ,因此检索正在执行的程序集的应用程序设置的最佳方法是什么,无论是ConfigurationManager还是web.config,在.NET标准类库中?

我们有三个项目:

  • ASP.NET Core Web App(1.1)
  • ASP.NET Web App(4.6.1)
  • .NET标准类库(1.4) - >由两个项目引用

在.NET Standard类lib中,我们有一个URL,需要根据其部署的环境进行更改。

这适用于.NET Core应用程序,我们只需将URL添加到相应的appSettings.{env}.json文件中,将适当的值添加到DI容器中,然后使用appSettings.{env}.json库来检索配置

但是,我们还需要从我们的.NET Framework 4.6.1应用程序中调用库,但由于没有方法(至少没有我能找到的)从Microsoft.Extensions.Options文件中检索值,我们没有很好的方法在类库中设置URL。

我们现在通过将URL变量设置为静态并在我们引用它的每个.NET Framework项目的web.config方法中设置其值来解决这个问题,我们通过appSetting确定它是哪个环境我们添加到每个web.config的密钥,然后根据环境手动设置URL。

是否有更强大的方法来处理从.NET标准类库中的.NET Core和.NET Framework应用程序检索appSettings值? 我们最好只在类库中设置值。

1 个答案:

答案 0 :(得分:2)

在调用库之前,您应该从配置中读取值,并通过参数将其传递给方法或构造函数。

通常,库代码不应该依赖于其主机环境配置的副作用。这样做会使重用代码或有效测试变得非常困难。