在Amazon Windows EC2实例上,我在VS2017 Express中创建了一个简单的Windows窗体应用程序,只需登录到C:\ Data \ Databases \ File.txt并使用Entity打开一个sqlite数据库C:\ Data \ Databases \ Database.db框架。
当我安装它时,这在我的本地机器和其他机器上工作得非常好。
一旦我将它安装到EC2,它看起来不像sqlite正常工作。写入文本日志,并在执行FileExists时找到数据库。
但是只要它命中“使用”
public class databaseDB : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite(@"Filename=C:\Data\Databases\Database.db");
}
}
try
{
using (databaseDB db = new databaseDB())
{
StaticFunctions.WriteToLog("Selecting...");
}
}
catch (Exception ex)
{
StaticFunctions.WriteToLog("Error!");
StaticFunctions.WriteToLog(ex.InnerException.ToString());
}
写入以下错误日志:
System.IO.FileNotFoundException:无法加载文件或程序集'System.ValueTuple,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一。该系统找不到指定的文件。文件名:'System.ValueTuple,Version = 4.0.2.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'---> System.IO.FileNotFoundException:无法加载文件或程序集'System.ValueTuple,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一。该系统找不到指定的文件。文件名:'System.ValueTuple,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'
我一般都读过,这意味着SQLite安装不正确。我已经尝试自己注册各种sqlite dll,但不断得到“模块已加载但未找到入口点DllRegisterServer”。错误。
我还读过,将sqlite dll复制到应用程序目录有时会起作用,但由于它是一个应用程序,Windows似乎将安装埋在我无法达到的地方。
我该怎么做才能让这个有效?
谢谢!
事实证明,这是由于:Could not load file or assembly 'System.ValueTuple'
AWS EC2安装了.Net framework 4.7.2,我在4.6.1中进行开发。一旦我在我的开发人员实例上安装了4.7.2,我就遇到了同样的问题,所以更新了项目中的所有Nuget包,现在一切正常。