我已经建立了一个Windows服务应用程序在.NET(C#C),目前正在我的本地PC(Win& 64位)上运行,它有自己的事件日志文件,以及一个自定义日志文件,用于后调试登录到c:\ProgramData\MyAppName\
。
我有一个项目中的主要2 DLL,其中有所有的主要功能代码。
这些都是由服务VS项目挂钩的,服务VS项目还包含一个Windows窗体项目,该项目位于桌面托盘中,并为我提供服务的状态,因为它使用第三方API,API是否启动并运行,任何当前错误,加上它有按钮,使我能够停止/启动服务,如果我需要的话。
不过,我必须将这一切转移到Windows 2012 Server上,有几个问题我需要解决。
1.服务器上没有Visual Studio,所以没有目录让我放置我的项目,重建它们,运行它们,让其他应用程序挂钩到DLL,我必须做的“添加引用”等。
如果需要的话,我是否应该下载VS Web Edition或其他东西到服务器上,以使其更容易管理/调试/代码?
或者有另一种方法,例如只是复制DLL的和regsrvr他们安装,然后复制服务/应用程序到服务器,它会自动引用它的工作,如果没有什么过程。
主要代码在我构建的DLL中,它还附带了JSON第三方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项目(或它们创建的工作代码)从我的Win764位机器移动到Win 201264位服务器。
在服务器上没有Visual Studio的情况下,让所有东西都正常工作、文件夹都显示出来(programdata)以及服务启动和运行的最佳步骤是什么?
1条答案
按热度按时间nwlls2ji1#
首先,您不需要在服务器上安装Visual Studio来运行服务。如果您为应用程序创建了安装程序,您将能够确保所有依赖项(解决方案内的依赖项和外部的依赖项)都与应用程序沿着安装。有许多程序/插件可以创建安装程序。
其次,修改你的应用程序,让它使用非系统文件夹来写日志等。这样你就可以把它安装在任何地方,而不必进行大量的检查,看看你是在什么操作系统下安装。也有代码来检查这些文件夹的存在,并创建他们,如果他们不存在。
第三,如果事件日志不存在,您可以让代码创建它--尽管这需要管理员级别的访问权限,所以最好由安装程序完成,这样您就可以在用户帐户下运行服务。