0

我已经在 .NET (C#C) 中构建了一个 Windows 服务应用程序,该应用程序当前在我的本地 PC(Win 和 64 位)上运行,它有自己的事件日志文件以及用于后期调试的自定义日志文件,该文件注销到c:\ProgramData\MyAppName\.

我在一个包含所有主要功能代码的项目中拥有主要的 2 个 DLL。

这些被服务 VS 项目挂钩,该项目还包含一个 Windows 窗体项目,它位于桌面托盘中,并为我提供服务状态,因为它使用 3rd 方 API,API 是否启动并运行,任何当前错误,此外,它还有一些按钮,让我可以在需要时停止/启动服务。

但是,我不得不将这一切都转移到 Windows 2012 Server 中,并且有一些问题需要解决。

  1. 服务器上没有 Visual Studio,所以我没有目录可以放置我的项目、重建它们并运行它们并让其他应用程序挂接到我必须与“添加引用”等相关的 DLL。

如果需要,我是否应该将 VS 网络版或其他东西下载到服务器以使其更易于管理/调试/代码?

或者是否有另一种方法,例如只需复制 DLL 和 regsrvr 进行安装,然后将服务/应用程序复制到服务器,它会自动引用它的工作,如果不是,程序是什么。

主要代码在我构建的 DLL 中,它还附带一个 JSON 3rd 方 API 构建的 DLL。

当我重建主项目时,它们都会重新创建,然后我必须在重建它们以使其正确运行之前将它们删除并重新添加到服务和 win 表单项目中。

在服务器上没有 VS 的情况下如何解决这个问题

  • 我可以将代码的调试/制作保留在我的 PC 上,然后将文件复制过来吗?- 尽管路径不同,从服务/应用程序到 DLLS 的链接是否仍然有效?- 如果不是我该怎么办?- 还有存放它们的最佳文件夹在哪里?

我还注意到,尽管我对服务器(RD/SFTP/Win Share)具有管理员/根访问权限,但我在 C:\ 驱动器上看不到 ac:\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 的情况下,要使所有内容正常工作并显示所有文件夹(程序数据)以及启动和运行服务的最佳步骤是什么?

4

1 回答 1

0

首先,您无需在服务器上安装 Visual Studio 即可运行该服务。如果您为应用程序创建安装程序,您将能够确保所有依赖项(解决方案内的依赖项和外部依赖项)都与您的应用程序一起安装。有许多创建安装程序的程序/插件。

其次,更改您的应用程序,使其使用非系统文件夹来写入日志等。这样您就可以在任何地方安装它,而无需进行大量检查以查看您正在安装的操作系统。还有代码来检查这些文件夹是否存在,如果它们不存在则创建它们。

第三,如果事件日志不存在,您可以获取代码来创建事件日志 - 尽管这需要管理员级别的访问权限,因此最好由安装程序完成,这样您就可以在用户帐户下运行您的服务。

于 2016-07-04T12:28:21.710 回答