为什么我的 WPF 程序在没有 Visual Studio 的情况下无法运行?
问题标题并不准确,因为它与 Visual Studio 并不真正相关。 MultiStart.exe
取决于配置 ( MultiStart.exe.config
) 以及其他程序集 ( System.Data.SQLite.dll
)。没有这些依赖项,应用程序就无法运行(因为 .NET 就是这样工作的)。
WPF 不一定需要配置文件来运行,所以问题是应用程序需要的配置文件中有什么。可以将此配置信息移动到代码中(例如连接字符串)并删除 app.config,但随后这些值将在应用程序中进行硬编码。
对于依赖程序集,可以将它们作为资源嵌入,而不是部署它们,然后使用AppDomain.AssemblyResolve 事件从资源中读取程序集(有关示例, 请参阅在另一个程序集中嵌入程序集)。
另一种不将程序集作为资源嵌入的方法是将它们合并到一个程序集中。 ILMerge是合并程序集的流行选择,但我读到它可能与 WPF 程序集有问题(不确定这是否适用于您)。有关将程序集与 WPF 合并的其他一些想法,请参阅使用 wpf 将 dll 合并到单个 .exe 中。
请注意,设置 PATH 变量不起作用,因为 .NET 不使用 PATH 来解析程序集——有关详细信息,请参阅运行时如何定位程序集。
另一种选择不是将其复制MultiStart.exe
到桌面,而是使用桌面上链接到相应目录的快捷方式。也许这是一个更简单的解决方案