“无法加载文件或程序集”错误。可以在我的电脑上运行,但不能在其他电脑上运行
Posted
技术标签:
【中文标题】“无法加载文件或程序集”错误。可以在我的电脑上运行,但不能在其他电脑上运行【英文标题】:"Could not load file or assembly" Error. Works on my computer but not others 【发布时间】:2011-12-22 06:03:18 【问题描述】:我有一个带有单个项目文件的解决方案。我正在部署为 ClickOnce 应用程序。它在我的计算机上运行良好,但是当我尝试在其他人的计算机上运行它时,我得到了这个错误
System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
System.Windows.Forms.DataVisualization
在我的项目中作为参考加载的方面,我相信在使用它的任何地方都有适当的 using 语句。
当我转到我的项目属性>发布>应用程序文件... System.Windows.Forms.DataVisualization 旁边有一个感叹号“项目不再引用此项目。如果它是不再需要,可以通过右键单击该项目将其删除。”发布状态为“包含”,哈希为“包含”。但是,发布状态不是“包括(自动)”;排除旁边有自动文本。但是无论我是包含还是排除,在其他人的机器上运行时都会遇到同样的错误。
你认为我应该怎么做才能让这个文件被正确引用?
谢谢
更新:
我试过设置 Local Copy = true, build rebuild 无济于事。
我现在正在考虑所有其他建议。 (我和不工作的电脑之间有很长的路要走!)
【问题讨论】:
听起来 dll 不在您认为的位置。你确定位置?您是否尝试过删除引用并重新添加? 您是否尝试在其中一台出现问题的机器上安装 .Net 3.5?如果是这样,我认为您需要在您的应用程序中重新分发System.Windows.Forms.DataVisualization
,因为我认为它可能不是基本 .Net 框架的一部分。谷歌似乎证实了我的想法......
@timmy 我的项目是 3.5。该项目在 VS2008 Express 中启动,现在我们拥有 VS2010。我想我会把它保持在 3.5 以尽量减少可能出错的事情,但这似乎是一个副作用,也许?
另一种解决方案是升级到 .Net 4.0,因为图表控件在 4.0 中已合并到核心 .Net 框架中
@MarkJ 仅供参考,大约一年后,这正是发生的事情。这是正确的选择,原因不止一个。
【参考方案1】:
听起来你需要在你的 redist 中包含链接下载 - 即使你有程序集,你也可能会丢失依赖项:
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=14422
【讨论】:
下载这个就可以了!现在我只需要像@Eric J's answer中那样将它作为先决条件提供。【参考方案2】:重新安装 MSChart.exe
这对我有帮助!
【讨论】:
【参考方案3】:我知道这个问题发布已经有一段时间了,但我遇到了同样的问题并设法解决了。
为了在其他机器上运行该应用程序,我在其他机器上安装了 Microsoft Chart Controls - 只需在http://www.microsoft.com/download/en/details.aspx?id=14422 下载并运行 MSChart.exe。
【讨论】:
这是我最终必须要做的。虽然这意味着用户现在需要重新启动并运行单独的安装(主要是因为我还没有弄清楚如何成功制作安装程序)。总体而言,VS2008/.NET3.5 的变化令人失望【参考方案4】:MSDN:
讨论了这个具体问题http://connect.microsoft.com/VisualStudio/feedback/details/538952/clickonce-cannot-include-system-windows-forms-datavisualization-dll
该帖子指出了一个建议的解决方案:
http://www.thehat.free-online.co.uk/MSChart/
一般来说,Fuslogvw(融合日志查看器)是您了解 .NET 无法加载引用的朋友。
当日志记录处于活动状态时,用于尝试解决依赖关系的策略会被记录下来,并且 fuslogvw 可以让您查看该策略。
在找到DLL的电脑和没有找到DLL的电脑上运行,比较日志结果。
【讨论】:
MSCharts.exe 文件正确且有效,但是,我似乎无法将其添加为先决条件。我按照thehat.free-online.co.uk/MSChart 链接上的说明进行操作。没有运气 我仍然无法让图表组件显示在 Prereqs 下。如何让 VS 确认我通过链接创建的文件?【参考方案5】:也许 dll 在您的 GAC 中,因此 .net 可以找到它。但是您没有将它与您的应用程序一起部署,并且它在其他计算机上失败了。您可以做的是找到 dll 将其添加为对您的项目的引用(因为您丢失了它)并确保将本地复制设置为 true。
【讨论】:
【参考方案6】:只需更改 web.comfig 文件中的版本
前:- namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, 版本=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
【讨论】:
以上是关于“无法加载文件或程序集”错误。可以在我的电脑上运行,但不能在其他电脑上运行的主要内容,如果未能解决你的问题,请参考以下文章
抛出:当我运行我的应用程序版本 .exe 时,“无法加载文件或程序集错误”
无法加载文件或程序集不支持操作。 (HRESULT异常:0x80131515)