【问题标题】:Moving from local PC to Server从本地 PC 移动到服务器
【发布时间】: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 中,并且有一些问题需要解决。

  1. 服务器上没有 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


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗯,它使用环境变量来获取它应该创建文件夹的路径(如果不存在则创建 - 与事件日志相同) - 但我只是为了安全考虑,他们已经停止应用程序存储文件整个操作系统并为此创建了 ProgramData 文件夹。问题是有 2 个项目 1 我的 DLL 包含包含 JSON DLL 的所有代码,然后另一个项目在服务和 Windows 窗体应用程序中都引用了这 2 个 DLL,我如何在这两个项目中创建安装程序?跨度>
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2013-01-24
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多