【发布时间】:2016-07-04 12:20:17
【问题描述】:
我已经在 .NET (C#C) 中构建了一个 Windows 服务应用程序,该应用程序当前在我的本地 PC(Win 和 64 位)上运行,它有自己的事件日志文件以及用于后期调试的自定义日志文件注销到c:\ProgramData\MyAppName\。
我在一个项目中拥有两个主要的 DLL,其中包含所有主要功能代码。
这些被服务 VS 项目挂钩,该项目还包含一个 Windows 窗体项目,它位于桌面托盘中并为我提供服务状态,因为它使用 3rd 方 API,无论 API 是否启动并运行,任何当前错误,加上它有按钮让我可以在需要时停止/启动服务。
但是,我不得不将这一切转移到 Windows 2012 Server 中,并且有一些问题需要解决。
- 服务器上没有 Visual Studio,因此没有目录可供我放置项目、重建项目并运行它们并让其他应用程序挂接到我必须使用“添加引用”等操作的 DLL 中。
如果需要,我是否应该将 VS 网络版或其他东西下载到服务器上,以便于管理/调试/编写代码?
或者是否有其他方法,例如只需复制 DLL 和 regsrvr 进行安装,然后将服务/应用程序复制到服务器,它会自动引用它工作,如果不是,程序是什么。
主要代码在我构建的 DLL 中,它还附带一个 JSON 3rd 方 API 构建的 DLL。
当我重建主项目时,它们都会重新创建,然后我必须将它们删除并重新添加到服务和 win 表单项目中,然后再重建它们才能正常运行。
如果没有服务器上的 VS,我该怎么做
- 我可以将代码的调试/制作保留在我的 PC 上,然后将文件复制过来吗? - 尽管路径不同,从服务/应用程序到 DLLS 的链接是否仍然有效? - 如果不是我该怎么办? - 还有,存放它们的最佳文件夹在哪里?
我还注意到,尽管我对服务器(RD/SFTP/Win Share)具有管理员/根访问权限,但我在 C:\ 驱动器上看不到 c:\ProgramData 文件夹。这是我的应用程序在我的 PC 上运行时 24/7 运行时的所有日志记录的地方。它每天创建一个日志文件,2 个历史文件 - 全部用于后期调试等。
这是因为它是 Win 2012 服务器,而我用来获取项目路径的代码是
this.Logpath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\" + NameOfMyApp;
工作方式不同,例如 Environment.SpecialFolder.CommonApplicationData 是 Win 2012 上的不同文件夹,还是我需要做一些事情来显示 ProgramData 文件夹以便我可以正常浏览它?
我记得最近我在我的 Win7 机器上执行 Windows 更新时出现了问题(显然在 Win7 中很常见),然后我看不到 ProgramData 文件夹(服务仍在运行) - 直到我的配置文件被交换(它正在使用默认临时配置文件,这就是为什么我的所有桌面图标都与书签和文件夹一起使用。
所以我试图将这 2 个 VS 项目(或它们创建的工作代码)从我的 Win7 64 位机器移动到 Win 2012 64 位服务器。
在服务器上没有 Visual Studio 的情况下,要使所有内容正常运行并显示所有文件夹(程序数据)以及启动和运行服务的最佳步骤是什么?
【问题讨论】:
标签: .net dll windows-services windows2012 programdata