7

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

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

4

3 回答 3

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>
于 2014-04-07T19:16:51.383 回答
5

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

  <PropertyGroup>
    <AllowedReferenceRelatedFileExtensions>
      .pdb;
      .xml;
      .exe.config;
      .dll.config
    </AllowedReferenceRelatedFileExtensions>
  </PropertyGroup>
于 2016-02-23T21:13:29.903 回答
-1

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

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

于 2012-04-04T14:34:44.083 回答