Сохраняют ли.dll какие-либо ссылки, добавленные в ваш проект?
ПРОБЛЕМА
Я создал проект C#, который реализует ссылку System.Management.Automation (что позволяет мне писать команды powershell в моем проекте).
Я скомпилировал проект и скопировал dll в папку плагинов моего приложения Rainmeter, чтобы я мог использовать его вместе с другим Rainll, поставляемым вместе с dll.
Это прекрасно работает на моей машине (64 бит); тем не менее, я хочу загрузить эту же конфигурацию на другой сервер (также 64-битный). На обеих машинах используется одинаковая установка.NET Framework (4.5).
Согласно этому источнику, я должен иметь возможность просто скопировать папку Rainmeter с включенной DLL, и она должна работать без проблем (я использую переносную установку Rainmeter).
Я получаю ошибку "System.IO.FileNotFoundException", если я не удаляю "SystemVersion.dll", которую я создал, при запуске Rainmeter на другом сервере.
ВОПРОС
Поскольку проблема явно dll я добавил, я предполагаю, что ссылка не добавляется в dll?
================================================== =======================РЕДАКТИРОВАТЬ
Согласно ответу @Hackerman, проблема заключалась в том, что dll не смогла найти мою ссылку. Путь для System.Management.Automation требует, чтобы на компьютере была установлена версия PowerShell 3.0 для загрузки ссылки.
Мой сервер работал под управлением PowerShell версии 2.0, но после установки версии 3.0 библиотека DLL смогла загрузить ссылку, и Rainmeter отобразил мои результаты, как и ожидалось.
1 ответ
Когда вы строите свой class library
ссылки не попадают embedded
на вашем финале dll
, System.IO.FileNotFoundException
что вы получаете, потому что ваша DLL не может загрузить System.Management.Automation.dll
ссылка на целевой сервер. Установка PowerShell 3.0
на сервере должен решить проблему.