【发布时间】:2009-08-21 20:20:55
【问题描述】:
用户无法安装 ClickOnce 应用程序。错误是:“文件 NLog.dll 不是有效的可移植可执行 (PE) 文件。”它在我的机器上运行良好,但我安装了 nLog。这对于客户端机器是不可能的。任何想法如何让它发挥作用?
【问题讨论】:
用户无法安装 ClickOnce 应用程序。错误是:“文件 NLog.dll 不是有效的可移植可执行 (PE) 文件。”它在我的机器上运行良好,但我安装了 nLog。这对于客户端机器是不可能的。任何想法如何让它发挥作用?
【问题讨论】:
如果使用ClickOnce 安装您的NLog.config 不会被复制到您的程序中,我找到了这个问题的答案。
您需要使用Solution Explorer 在Project 中选择NLog.config 文件,并将其Properties 设置如下:
现在,当您使用ClickOnce 进行部署时,文件也应该被复制过来! :)
【讨论】:
我将所有 NLog 配置数据放入 App.config 文件而不是 NLog.config 文件中,并且在使用 ClickOnce 部署后它也对我有用。没有错误,日志记录正在部署的应用程序上运行。
【讨论】:
检查您的构建选项并确保 NLog.dll 包含在“应用程序文件”中,以便它位于“下载组”/必需中。
【讨论】:
如果您的 NLog 程序集部署到 GAC,那么您不能(简单地)将其包含在 ClickOnce 设置中。尝试将它们部署为本地 DLL。如果这不可行,您将需要单独的安装程序(或 MSI)来部署 NLog。
【讨论】:
将dll添加到您的项目并设置BuildAction = None,并将“复制到输出目录”设置为“不复制”。
删除项目中对 NLog 的引用。重新添加引用并将其指向您刚刚添加到项目中的 dll。在引用的属性上,将“复制本地”设置为“真”。
现在当你运行应用程序时,它会指向本地版本,而当你部署应用程序时,它会部署本地版本并指向它。
这适用于许多第 3 方 DLL,但不是全部。最好的办法就是尝试一下。
【讨论】: