从本地PC转移到服务器



我已经在。net (c# C)中构建了一个Windows Service应用程序,该应用程序目前正在我的本地PC上运行(Win&64位),它有自己的事件日志文件,以及一个自定义的日志文件,用于后期调试,注销到c:ProgramDataMyAppName

我在一个项目中有两个主要的dll,其中包含所有主要的功能代码。

这些是由Service VS Project连接到的,它还包含一个Windows Form Project,它位于桌面托盘中,给我一个服务状态,因为它使用第三方API, API是否启动和运行,任何当前错误,加上它有按钮使我能够停止/启动服务,如果我需要的话。

然而,我不得不将这一切移动到Windows 2012服务器,有几个问题我需要解决。

  1. 服务器上没有Visual Studio,所以没有目录让我放置我的项目,重建它们并运行它们,让其他应用程序钩入我必须做的dll "添加引用"等。

我应该下载VS Web版或其他东西到服务器,使这更容易管理/调试/代码,如果我需要吗?

或者有另一种方法,例如只是复制DLL并注册它们来安装,然后将服务/应用程序复制到服务器,它会自动引用它的工作,如果不是什么过程。

主代码是在我构建的DLL中,它还附带一个JSON第三方API构建的DLL。

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

如果服务器上没有VS,我该怎么做呢

  • 我可以保留调试/制作代码到我的PC,只是复制文件吗?-链接到dll从服务/应用程序仍然工作,尽管路径不同?-如果不是,我该怎么办?-哪里是最好的文件夹存储它们?

我还注意到,尽管我有admin/root访问服务器(RD/SFTP/Win Share),我看不到c:ProgramData文件夹上的c:驱动器。这是我的应用程序在我的PC上运行时的所有日志记录。它每天创建一个日志文件,两个历史日志文件——都是为了后期进程调试等。

这是因为它是一个Win 2012 Server和代码,我用它来获取路径在我的项目,这是

this.Logpath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\" + NameOfMyApp;

的工作方式不同,例如Environment.SpecialFolder.CommonApplicationData是Win 2012上的不同文件夹,或者我是否需要做一些事情来显示ProgramData文件夹,以便我可以正常浏览它?

我记得最近当我在我的Win7机器上进行Windows更新时,有些东西弄乱了(显然在Win7中很常见),然后我看不到ProgramData文件夹(服务仍在运行)-直到我的配置文件被交换(它使用默认的临时配置文件,这就是为什么我所有的桌面图标都伴随着书签和文件夹)。

所以我试图将这些2 VS项目(或他们创建的工作代码)从我的Win7 64位机器移动到win2012 64位服务器。

在服务器上没有Visual Studio的情况下,要使一切正常工作,文件夹全部显示(programdata),加上服务启动并运行,最好的步骤是什么?

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

第二,修改你的应用程序,让它使用非系统文件夹来写日志等等。这样你就可以在任何地方安装它,而不必检查你安装的是什么操作系统。还需要代码来检查这些文件夹是否存在,如果它们不存在则创建它们。

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

最新更新