【问题标题】:JSON Config file shared between projects in same solutionJSON 配置文件在同一解决方案中的项目之间共享
【发布时间】:2019-03-20 03:13:22
【问题描述】:

我正在编写一个由 3 个项目组成的网络应用程序。 ASP.net MVC5 网站,一个运行用户使用该网站安排的作业的 Windows 服务,然后是其他两个项目引用的类库。我有一个类库引用的 JSON 配置文件。它包含有关作业应如何运行的数据。我想将它包含在我的源代码控制中,并且我希望它是 JSON,以便使用该应用程序的同事可以轻松更改它,而无需重新编译解决方案。只有类库需要访问 json 文件——其他两个项目引用类库,因此它们本质上是通过访问类库中的类来引用 json 文件中的设置。

我的问题是,我在类库类中引用 json 配置文件路径,如下所示:AppDomain.CurrentDomain.BaseDirectory + "config.json" 但是,当 Web 服务器从类库中实例化一个类时,路径解析的是 Web 服务器的基目录而不是类库,这并不奇怪。

最好的方法是什么?我可以将配置文件永久保存在 webapp 项目中,然后在 windows 服务项目中链接到配置文件吗?但不确定在部署解决方案后会如何工作?

Web 项目是 .NET 标准 MVC 5。对于配置文件类型,JSON 优于 XML。

【问题讨论】:

  • 不确定这是否有帮助,但在我的一个项目中,我使用了这个:var configPath = Path.Combine(AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory, "config.json"); 这里的关键点是,在 WebAPI 项目中,正确的路径在 AppDomain.CurrentDomain.RelativeSearchPath 中,即 null对于桌面应用程序,因此在这种情况下使用AppDomain.CurrentDomain.BaseDirectory
  • 它是 .NET Core 项目吗?文件需要是 JSON 吗?可以是XML配置文件吗?
  • Web 项目是 .NET 标准 MVC 5。对于配置文件类型,JSON 优于 XML。
  • 更好的方法是编写 ConfigurationSection 处理程序,它将解析配置部分并提供数据......这很好地支持 XML 配置文件......您可以在 Class 中创建此部分处理程序库...然后您需要在Web Project和Windows Service项目中拥有XML配置文件...您无需担心路径...默认情况下会从应用程序路径中读取它...跨度>
  • 是的,这基本上就是它目前的工作方式,它只使用 json 而不是 xml。但问题是配置文件需要同时驻留在 Web 和服务项目中。我只想为解决方案提供一个配置文件,否则要进行更改,您必须更改这两个文件并确保它们保持完全相同。例如,是否可以让 Windows 服务配置文件成为 Web 项目中配置文件的指针?或者我有什么选择?

标签: c# asp.net-mvc


【解决方案1】:

我刚刚对其进行了测试以确保,所以这应该可以工作:

如果您的文件在您的类库项目中,您可以转到解决方案资源管理器,右键单击它,> 属性,然后在窗口中查找copy to output directory。将其设置为您认为最好的 Alwaysonly if newer,并且应将其复制到引用类库的项目的 bin 文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多