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

tet*_*ete 6 .net app-config

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

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

Wal*_*lly 5

您可以使用post-build事件,或者......

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

来自ProjectA.csproj:

<None Include="..\ProjectB\bin\Debug\B.exe.config">
  <Link>B.exe.config</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Run Code Online (Sandbox Code Playgroud)

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

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


Tel*_*ian 5

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

  <PropertyGroup>
    <AllowedReferenceRelatedFileExtensions>
      .pdb;
      .xml;
      .exe.config;
      .dll.config
    </AllowedReferenceRelatedFileExtensions>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


Kri*_*tof -1

您的应用程序目录中不能有 2 个 app.config。
Visual Studio默认会使用启动项目的app.config。
您可以在复制 app.config 的位置创建一个构建后事件触发器,但这将替换原始的 app.config (我猜测其中包含您需要的数据)。

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