c# - 无法加载文件或程序集 'Npgsql, Version=4.0.5.0,culture=neutral...' 或其依赖项之一。仅在任务计划程序中发生
问题描述
我的项目目标是从 Microsoft CRM 获取数据并将其上传到 PostGresSQL DB。当我手动运行可执行文件时,一切正常,但是当我将应用程序作为任务计划程序上的计划任务运行时,出现此错误:
“无法加载文件或程序集 'Npgsql, version=4.0.5.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' 或其依赖项之一。系统找不到指定的文件”。
我尝试将以下内容添加到我的 .csproj 文件中,但仍然没有运气
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
一切正常,直到它达到下面的功能。它不会进入该功能,因为“打印测试”从未写入控制台。
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();
}
}
解决方案
如果您的 .NET Framework 库将一些非托管代码库用作其依赖模块,则通常会出现此异常。尝试通过这些应用程序扫描您的库以查找依赖项:
http://www.dependencywalker.com/ (对于“遗留”技术和语言,如 C++、OCX、OLE 等;我不确定它现在是否适用于 MS.NET)
https://www.red-gate.com/products/dotnet-development/reflector/ (用于 MS.NET 模块扫描和代码反编译)
那应该指导您解决问题。如果它对您不起作用,请确保您已正确配置应用程序启动路径和搜索程序集的目标路径: https ://docs.microsoft.com/en-us/dotnet/framework/configure-apps/specify -装配位置
最后一件事是使用托管包装程序集将缺少的非托管代码程序集复制到目录中。
推荐阅读
- swiftui - viewModel 和 TextField 的问题
- javascript - 如何通过 USER ID 和@Mention 发送 DM 消息?
- c - Eclipse 调试错误“无法识别解释器‘mi2’”
- javascript - 当输入字段不为空且复选框选中时启用提交按钮
- vue.js - VueJS / NuxtJS 访问对象
- c - ESP32 println 给出乱码输出 Arduino IDE
- amazon-web-services - 如何扩展 AWS 应用程序负载均衡器以应对意外的流量峰值?
- django - 如何在 Django 3.1 ModelForm 中动态设置内置 MinValueValidator 的 limit_value
- php - 如何在 url 自定义帖子类型中获取类别/子类别/帖子名称
- ubuntu - Ubuntu / Windows 双启动:尝试在 NTFS 安装卷上写入时如何解决“只读”问题?