【问题标题】:ConfigurationManager in Referenced Assemblies引用程序集中的 ConfigurationManager
【发布时间】:2013-03-08 07:52:37
【问题描述】:

使用 VS 2012 C# .net 4.0,我有一个项目,它使用 ConfigurationManager 构建控制台应用程序进行配置。 这一切都很好。

我在同一个解决方案中有第二个项目,用于测试第一个项目(使用 nunit)。
这个 nunit 项目包含第一个项目作为参考,并将第一个项目的可执行文件作为子进程执行。

这不起作用。因为,虽然 nunit 项目构建了第一个项目的可执行文件,但它并没有创建 [第一个项目的可执行文件].exe.config 文件。

有人知道为什么不吗?当我构建 nunit 项目时,是否有一个按钮可以让我创建 [第一个项目可执行文件].exe.config?

【问题讨论】:

    标签: c# visual-studio configurationmanager


    【解决方案1】:

    任何时候使用配置文件,该文件都必须与正在运行的进程相关联。在这种情况下,运行的进程就是你的单元测试项目。

    当您在单元测试的上下文中使用 ConfigurationManager 时,它会为单元测试项目查找配置文件 (App.Config) 的值。

    您正在引用控制台应用程序程序集,但无法在单元测试过程中引用控制台应用程序的配置文件。

    因此,您应该在单元测试项目中添加一个新的App.Config 并将您的配置值放在那里。

    希望这会有所帮助。

    【讨论】:

    • 感谢 Davin,我已经尝试过了,但没有成功,我没有尝试从单元测试过程中引用控制台应用程序的配置文件。而不是从使用单元测试项目构建的consoleApp.exe 进程内部(作为参考)。构建 unitTest 项目给了我 consoleApp.exe、unitTest.dll 和 unitTest.dll.conf 但没有 consoleApp.exe.conf 并且 consoleApp.exe 似乎没有从 unitTest.dll 中获取设置.conf。所以它不能正确运行。
    【解决方案2】:

    它可能不漂亮,但添加预构建事件:

    copy "$(SolutionDir)ConsoleApp\App.config" "$(TargetDir)ConsoleApp.exe.config"
    

    解决了我眼前的问题。

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多