如何在.NET中的引用可执行文件中包含App.config信息?

时间:2012-04-04 14:29:05

标签: .net app-config

我有一个可执行项目,比方说A,它正在运行中启动另一个可执行项目B。为了在A的当前工作文件夹中有B.exe,我将B添加为A的引用,以便在编译后B.exe将被复制到A的文件夹中。但是,我注意到我在{A}文件夹中没有复制或生成B的配置(A文件夹中没有B.exe.config文件,只有B.exe) ,因此未正确配置B的跟踪等内容。

我当然可以手动将B.exe.config复制到A的文件夹,但我敢打赌,有一些自动方法可以做到这一点。有人能帮助我吗?

3 个答案:

答案 0 :(得分:5)

您可以使用后期制作活动,或者......

在项目A中,添加对B.exe.config的链接引用。您可以通过向项目添加现有项来执行此操作。但是,在按下文件对话框上的添加按钮之前,请按添加按钮右侧的向下箭头,然后选择"添加为链接。"然后,将文件设置为复制到输出目录。在您的项目文件中,它看起来像这样:

来自ProjectA.csproj:

<None Include="..\ProjectB\bin\Debug\B.exe.config">
  <Link>B.exe.config</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

如果您不介意手动编辑项目文件,则包含的文件可能取决于构建配置。以下适用于构建(虽然双击项目树中的图标时VS2013不会打开文件。)

<None Include="..\ProjectB\bin\$(Configuration)\B.exe.config">
  <Link>B.exe.config</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

答案 1 :(得分:5)

更简单的解决方案是在csproj文件中简单地包含以下内容。这包括引用文件的匹配文件扩展名。

  <PropertyGroup>
    <AllowedReferenceRelatedFileExtensions>
      .pdb;
      .xml;
      .exe.config;
      .dll.config
    </AllowedReferenceRelatedFileExtensions>
  </PropertyGroup>

答案 2 :(得分:-1)

您的应用程序目录中不能有2个app.configs。
Visual Studio默认使用启动项目的app.config。
你可以创建一个post build事件触发器来复制app.config,但这会替换原来的app.config(我猜它包含你需要的数据)。

最好的方法(除了创建一个干净的dll +项目架构)是手动将项目A的所有配置数据合并到项目B的配置数据中。