【问题标题】:ILMerge: Combining assemblies in one exe, App.ConfigILMerge:在一个 exe App.Config 中组合程序集
【发布时间】:2015-04-20 23:23:56
【问题描述】:

我正在使用 ILMerge 将 .ddls 合并到一个可执行文件中,但是当我运行 Output.exe 时,似乎找不到 App.Config 文件。它返回错误:InvalidOperationException:在应用程序配置文件中找不到连接字符串名称。

我想知道 ILMerge 是否在 Output.exe 中包含了 App.Config 文件。

如何不包含它并确保 Output.exe 引用它?

我使用了 ILMerge GUI - 除了 .dll 之外,我没有选择包含任何内容 - 我从 ConsoleApplication 编译到的 bin/Release 文件夹中选择。

这是来自 bin/Debug 文件夹的图像。 ILMerge 没有让我选择包含 ConsoleLayer.vshost.exe.config - 其中包括(基本上) App.Config 文件。如何让它包含它,以便 Output.exe 在运行时知道连接字符串的详细信息?

谢谢。

【问题讨论】:

    标签: c# c#-4.0 console-application assemblies ilmerge


    【解决方案1】:

    默认配置文件为app_name.exe.config。您需要获取所需的配置文件并将其重命名以匹配 exe 文件。 在你的情况下Output.exe.config

    【讨论】:

    • 您的意思是将 ConsoleLayer.vshost.exe.config 文件(上面有红线的那个)复制到 Output.exe.config 所在的目录并重命名它吗?还是您的意思是从 Visual Studio 中的项目本身中获取它?保存 DataLayer (EntityFramework) 的程序集的 App.Config 怎么样?我还需要复制它吗?以什么名称?
    • 假设您的应用可以通过执行ConsoleLayer.exe 运行,您可以复制ConsoleLayer.exe.config(这是您的应用使用的配置文件),并将其重命名为Output.exe.config
    • 谢谢,这将上述错误更改为新错误 - 这是一个进步。它现在抱怨它无法加载文件或程序集“实体框架”。这可能与 Packages.config 有关吗?我试图复制它并将其重命名为 packages.exe.config 但这没有帮助。有什么想法吗?
    【解决方案2】:

    如果您找到了解决方案,这可能有点晚了,但是名称中包含 vshost 的任何文件通常都与您的应用程序中的调试模式相关联。这是您在调试模式下运行的应用程序。因此,当您单击 application.exe 运行您的应用程序时,它不会查找文件名中带有 vshost 的任何文件。它会寻找 application.exe.config 代替。您可以将其关闭以进行调试。

    除非您打算在合并的 exe 中包含调试文件,否则我认为没有必要包含它。它只对调试有用。

    这里有一些可能有用的链接...

    google search for disabling vshost

    Stackoverflow 问答...

    what-is-the-purpose-of-vshost-exe-file answered by the famous Jon Skeet

    【讨论】:

      猜你喜欢
      • 2012-07-31
      • 1970-01-01
      • 2017-12-03
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      相关资源
      最近更新 更多