Не удалось загрузить файл или сборку 'Npgsql, Version = 4.0.5.0, culture = нейтральный ...' или одну из ее зависимостей. Происходит только в планировщике задач - PullRequest
0 голосов
/ 13 июня 2019

Моя цель моего проекта - взять данные из Microsoft CRM и загрузить их в базу данных PostGresSQL. Когда я запускаю исполняемый файл вручную, все работает отлично, но когда я запускаю приложение как запланированное задание в планировщике заданий, я получаю эту ошибку:

"Не удалось загрузить файл или сборку" Npgsql, версия = 4.0.5.0, Culture = нейтральный, PublicKeyToken = 5d8b90d52f46fda7 'или одна из его зависимостей. Система не может найти указанный файл ".

Я попытался добавить следующее в мой файл .csproj, но все равно не повезло

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>  
 <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

Все работает до тех пор, пока не достигнет указанной ниже функции. Он не входит в функцию, так как «Print Test» никогда не записывается в консоли.

    public void upToPostgresDB(string queryString)
            {
                Console.WriteLine("Print Test");
    #if DEBUG
    //Credentials below are not actually blank, I just removed them for privacy

                String pgDatabase = "";
                String pgServer = "";
                String pgUser = "";
                String pgPass = "";
    #else
                String pgDatabase = "";
                String pgServer = "";
                String pgUser = "";
                String pgPass = "";
    #endif

                String pgConnectionString = String.Format("Server={0}; UserId={1}; Password={2}; Database={3}", pgServer, pgUser, pgPass,     pgDatabase);
            NpgsqlConnection pgCon = new NpgsqlConnection(pgConnectionString);
            NpgsqlCommand cmd = new NpgsqlCommand(queryString, pgCon);            
            try
            {

                pgCon.Open();
                cmd.ExecuteNonQuery();
                pgCon.Close();
            }
            catch (Exception e)
            {
                string errorMessage = "Failed to upload data to the postgres database.  " + e.Message;
                Console.WriteLine(errorMessage);
                pgCon.Close();
            }
        }

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Проблема заключалась в том, что я ТОЛЬКО скопировал и вставил исполняемый файл в папку назначения.Мне нужно было скопировать всю папку Debug или Release, поскольку сборки, не относящиеся к .NET, как правило, имеют такой эффект.Наличие всех зависимых библиотек в той же папке, что и мой .exe, это решило проблему.

0 голосов
/ 13 июня 2019

Это исключение обычно возникает, если ваша библиотека .NET Framework использует в качестве модуля зависимости также некоторую библиотеку неуправляемого кода. Попробуйте отсканировать вашу библиотеку на наличие зависимостей в следующих приложениях:

http://www.dependencywalker.com/ (для «устаревших» технологий и языков, таких как C ++, OCX, OLE и т. д .; я не уверен, работает ли он в настоящее время с MS.NET)

https://www.red -gate.com / продукция / DotNet-разработка / отражатель / (для сканирования модулей MS.NET и декомпиляции кода)

Это должно привести вас к решению. Если это не сработает для вас, в качестве следующего шага убедитесь, что вы правильно настроили путь запуска приложения и целевые пути для поиска сборок: https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/specify-assembly-location

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...