【发布时间】:2016-07-21 20:36:55
【问题描述】:
我有一个应用程序,由于其性质,需要在工作时间之后运行,以免中断用户的工作流程。我已经下载并添加了对Microsoft.Win32.TaskScheduler.dll 的引用,这是根据另一个关于安排任务在当天晚些时候运行的最佳方式的问题的建议。
在调试中,程序按预期工作,但是在部署时,我收到以下错误:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Win32.TaskScheduler, Version=2.5.16.0, Culture=neutral, PublicKeyToken=0d013ddd5178a2ae' or one of its dependencies.
这让我相信 dll 在构建时没有正确添加到可执行文件中。
我为解决此问题所采取的步骤:
- 在解决方案资源管理器中,确保 Microsoft.Win32.TaskScheduler Copy Local 属性为 True
- 项目属性、发布、应用程序文件 - Microsoft.Win32.TaskScheduler.dll 包含在发布中、需要下载、包含哈希
- 移除依赖并重新添加
- 遵循this answer 中的建议
在这一点上,所有人都失败了。我可以确认 .dll 应该在 /bin/debug 文件夹中。此外,我以同样的方式手动添加了System.Management.Automation,它似乎按预期运行。
如果有人有任何其他建议,我们将不胜感激。
【问题讨论】:
-
您是否在部署中包含了 TaskScheduler dll? IOW,不仅在您的 bin 文件夹中,还包括 .exe 运行的位置?
-
将TaskScheduler.dll与已部署的程序放在同一目录并运行时,程序正确启动。但是,由于此部署的设置方式,我仅限于单个文件。编辑:我应该将 dll 添加为资源并在运行时将文件写入文件目录还是有替代/更好的解决方案?
-
那么听起来部署设置需要更改;如果 DLL 需要在那里才能运行应用程序,则需要对其进行部署。
-
如果您受限于单个文件(无论出于何种原因),this question 的答案可能会对您有所帮助。 System.Management.Automation 可能已经存在于全局程序集缓存中,因为它是 PowerShell 的一部分
标签: c# dll include scheduled-tasks