【问题标题】:How can I reference an app.config from two separate projects (.csproj files)?如何从两个单独的项目(.csproj 文件)中引用 app.config?
【发布时间】:2016-09-21 17:37:20
【问题描述】:

我的应用中有两个 .csproj 文件,它们都生成一个 .exe,并且都有需要 app.config 中的值的 C# 程序。因此,由于只能有一个 app.config 文件(它们构建在同一个文件夹中),我想我只是将第二个程序(我们称之为 b.cs/b.exe)需要的值放在应用程序中第一个程序 (a.cs/a.exe) 的 .csproj 的 .config。但是第二个程序似乎无法访问 app.config。它在那里并且值在那里但是当我运行 string x = ConfigurationManager.AppSettings["BuildVersion"]; 时,x 总是空的。如果我从 a.exe 运行相同的代码,它工作正常。就好像 app.config 在 .exe 文件中嵌入了一些我无法在任何地方看到或设置的信息。

知道如何从两个单独的项目访问 anapp.config 中的值吗?

【问题讨论】:

  • 在运行时不再是app.config,而是(例如)yourapp.exe.config
  • 感谢@stuartd - 这对找到我的解决方案非常有帮助(发布在下面)。

标签: c# app-config


【解决方案1】:

您可以将app.config 保留在一个项目中,但将其作为链接(虚拟)文件添加到另一个项目中。来自这里的说明Including content files in .csproj that are outside the project cone

  • 在VS中右键项目。
  • 添加 -> 现有项目...
  • 找到文件。
  • 选择它,
  • 添加为链接(在对话框的添加按钮中下拉)。

【讨论】:

  • 谢谢 - 这有效,但我也需要将 b.exe.config 文件复制到输出目录。我猜除了 a.exe.config 之外还生成了该文件,它们只是基于添加的链接的副本。
【解决方案2】:

您是否尝试将其添加为链接项目

将 app.config 放在一个公共位置,然后右键单击每个项目以选择 添加 -> 现有项目。选择文件并单击添加按钮上的箭头并选择添加为链接

Share code with Add as Link

【讨论】:

  • 这行得通,但我也需要将 b.exe.config 文件复制到输出文件夹。
【解决方案3】:

您可以使用 app.config appSettings 节点中的文件参数将其指向您需要的其他应用的配置设置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
    </startup>
    <appSettings file="C:\MasterConfig.config">
        <add key="applicationMode" value="Dev"/>
        <add key="ServiceInterval" value="02:00:00"/>
    </appSettings>
</configuration>

然后像往常一样引用您需要的项目。

【讨论】:

    【解决方案4】:

    添加为链接有效,但我也需要将 b.exe.config 文件复制到输出目录。我猜除了 a.exe.config 之外还生成了该文件,它们只是基于添加的链接的彼此的副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多