Установите задачу «Пуск в» в той же папке, что и исполняемый файл (в Windows 7 это на странице свойств, на которой вы настраиваете путь запуска приложения) - таким образом, текущая папка (из среды) во время работы приложения совпадает с папкой приложения.Затем .Net должна использовать эту папку при разрешении путей без рутирования.
То, что вы видите, я считаю, является распространенной проблемой, которую вы также можете получить с помощью ярлыков.
То есть -папка автозагрузки устанавливается так же, как корень планировщика задач - чья библиотека запуска находится в каталоге c: \ windows \ system32
Тот факт, что «он работает на моей машине (tm)», вероятно, потому, чтокогда вы отлаживаете его локально, вы запускаете его напрямую?
Другие ответы здесь, которые предлагают использовать BaseDirectory, также будут работать.
Точно так же вы можете также изменить код на использование полного имени сборкии просто используйте Assembly.Load
.Тем не менее, это сломается, если версия / culture / publickeytoken этого DLL изменится в будущем.Конечно, это можно исправить, используя файл .config, чтобы указать имя загружаемой библиотеки DLL, а не жестко ее кодировать.Который - в любом случае - хорошая практика.