2012-01-18 92 views
5

我有一个完美的Windows窗体C#.NET 4应用程序,它使用SQLite3数据库文件来存储数据和显示窗体。无法加载程序集System.Data.SQLite.dll

当我在任何其他机器上部署我的应用程序,然后在开发机器上,我得到一个异常抛出,它的消息是“无法加载组件System.Data.SQLite.dll或其依赖项之一。指定的模块不能被发现。”

项目中的System.Data.SQLite.dll引用设置为Copy Local = True。另外,我尝试用Assembly.LoadFile手动加载程序集。该dll被放置在输出目录中。我也尝试将平台目标设置为任何CPU以及x86,没有区别。我正在使用的所有机器都是32位的。这里有什么问题?为什么我的应用程序试图加载程序集并找不到它?

谢谢!

+1

看一看SO主题 - http://stackoverflow.com/questions/1278929/could-not-load-file-or-assembly-系统数据sqlite – adatapost 2012-01-18 02:34:13

+0

谢谢,但这看起来像一个Web应用程序的解决方案。我是一个Windows窗体应用程序,你附加的解决方案不起作用。 – user1094786 2012-01-18 06:14:38

+0

你如何部署?你有一个安装项目,复制释放文件夹? – MPelletier 2012-01-19 04:27:54

回答

13

将我的程序发布到单独的计算机后,发生同样的问题。在单独的计算机上安装Microsoft Visual C++ 2010可再发行组件包(x86)解决了问题。

注:单独的计算机已经有微软的V​​isual C++ 2010再发行组件包()安装,需要在版本。

+0

链接已经死了...... – jjxtra 2014-01-23 18:29:43

+0

谢谢你让我知道,我只是想表达我最初找到问题答案的地方。如果问题的原因是相同的,我想我的解释就足够了。 – 2014-01-25 22:53:42

6

“System.Data.SQLite.dll”需要“msvcr100.dll”,它是其中的一个依赖关系。只有当您安装最新的“Microsoft Visual C++ Redistributable”或任何其他内部提供此产品的产品时才可用。

例如,VS2010会默认安装C++可再发行。那是你的应用程序亘古不变的一些工程机的原因,但在人的作品。

你可以尝试在你的应用程序bin文件夹粘贴“msvcr100.dll”和如果你不想在所有的电脑上安装VC++ 2010 Redist,请发给我。

+0

谢谢 - 这在我的情况下做到了。 – Eternal21 2014-01-30 16:05:19