2016-07-04 3 views
0

Я создал приложение Windows Service в .NET (C# C), которое в настоящее время выполняется на моем локальном компьютере (Win & 64 бит), и у него есть собственный файл журнала событий, а также пользовательский файл журнала для пост-отладки, который выходит в c: \ ProgramData \ MyAppName \Перемещение с локального ПК на сервер

У меня есть две основные библиотеки DLL в одном проекте, который имеет весь основной функциональный код.

Это связано с Проектом VS VS, который также содержит проект Windows Form, который находится в настольном лотке и предоставляет мне статус службы, поскольку он использует сторонний API, независимо от того, запущен и запущен API, любая текущая ошибка, плюс у нее есть кнопки, позволяющие мне остановить/запустить службу, если мне нужно.

Однако мне нужно переместить все это на сервер Windows 2012 Server, и есть несколько проблем, которые мне необходимо решить.

1) На сервере нет Visual Studio, поэтому для меня нет каталогов для размещения моих проектов, их перестроения и запуска их, а другие приложения могут подключаться к библиотекам DLL, которые я должен использовать с «Добавить ссылку» и т. Д.

Должен ли я загрузить VS Web Edition или что-то на сервер, чтобы упростить управление/отладку/код, если мне нужно?

Или есть другой способ, например, просто скопировать DLL и regsrvr их для установки, затем скопировать службу/приложение на сервер, и у него автоматически будут ссылки на него, а если нет, то какая процедура.

Основной код в DLL, который я построил, который также поставляется с DLS сторонних разработчиков JSON.

Они оба воссоздаются, когда я перестраиваю основной проект, тогда мне нужно удалить и повторно добавить их как в проекты службы, так и в проекты win-форм, прежде чем перестраивать их для правильной работы.

Как обойти это без VS на сервере - Могу ли я отлаживать/создавать код на своем ПК и просто копировать файлы? - будут ли ссылки на DLLS из службы/приложения работать, несмотря на разные пути? -Если нет, что мне делать? -Так где же самая лучшая папка для их хранения?

Также я заметил, что несмотря на то, что у меня есть доступ администратора/root к серверу (RD/SFTP/Win Share), я не вижу папку c: \ ProgramData на диске C: \. Здесь все записи из моего приложения, когда он работает 24/7, запускаются на моем ПК. Он создает один файл журнала в день, 2 исторические - все для пост процесс отладки и т.д.

Является ли это потому, что это Win 2012 сервер и код я использую, чтобы получить путь в моем проекте, который

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

работает по-другому, например Environment.SpecialFolder.CommonApplicationData - это другая папка в Win 2012, или мне нужно что-то сделать, чтобы показать папку ProgramData, чтобы я мог нормально ее просматривать?

Я помню, что недавно, когда я сделал Windows Update на своей машине Win7, что-то сработало (видимо, с Win7), и я не смог увидеть папку ProgramData (служба все еще была запущена) - пока мои профили не были заменены (он использовал профиль temp по умолчанию, поэтому все мои значки на рабочем столе совпадали с закладками и папками).

Итак, я пытаюсь переместить эти 2 проекта VS (или рабочий код, который они создают) с моей 64-разрядной машины Win7 на 64-битный сервер Win 2012.

Каковы лучшие шаги, которые необходимо предпринять, чтобы все работало и все папки, отображающие (programdata), плюс обслуживание и работа без наличия Visual Studio на сервере?

Благодарим за любую помощь заранее.

ответ

0

Во-первых, вам не нужно иметь Visual Studio, установленную на сервере для запуска службы. Если вы создаете установщик для приложения, вы сможете гарантировать, что все зависимости (как внутри решения, так и внешние) будут установлены вместе с вашим приложением. Существует ряд программ/плагинов, которые создают установщиков.

Во-вторых, смените приложение так, чтобы оно использовало несистемные папки для записи журналов и т. Д. Таким образом, вы можете установить его в любом месте, не имея большого количества проверок, чтобы узнать, какую ОС вы устанавливаете. Также у вас есть код для проверки наличия этих папок и создания их, если они отсутствуют.

В-третьих, вы можете получить свой код для создания журнала событий, если он не существует, хотя для этого требуется доступ к уровню администратора, поэтому это лучше всего сделать установщику, чтобы вы могли запускать свою службу под учетной записью пользователя.

+0

Ну, он использует переменные Enviroment, чтобы получить путь для того, где он должен создать папку (и создает, если не там - то же самое с журналом событий), - но я просто подумал о безопасности, что они остановили приложения, хранящие файлы по всей ОС и создала папку ProgramData для этой цели. Проблема в том, что там 2 проекта 1 моей DLL со всем кодом, который включает JSON DLL, а затем другой проект, который ссылается на эти 2 DLLS в приложении Service и Windows Form, как мне создать установщик для обоих проектов? – MonkeyMagix

Смежные вопросы