我试图使用ClosedXML在应用程序中生成Excel文档,但是当我试图运行它时,我收到了无法加载文件或汇编服务器错误。
Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
我见过几种解决方案,包括更改.dll属性中的“Copy Local”值,以及将程序集直接添加到web.config。
我使用的是Visual Studios 2010,dll属性不包括“复制本地”项。然后,当我在Web配置中输入以下程序集时,我仍然收到相同的服务器错误消息。我从提供的错误消息中获得了程序集。
<add assembly="ClosedXML, Version=0.76.0.0, Culture=neutral, PublicKeyToken=fd1eb21b62ae805b"/>
6条答案
按热度按时间guz6ccqo1#
在疯狂地搜索答案并最终发布一个问题之后,我遇到了最简单的答案,一旦我引用了额外的.dll,一切都正常工作。
若要使用ClosedXML,必须引用DocumentFormat.OpenXml.dll:
用于NET 4.0及以上版本的文档格式. OpenXml.dll
rekjcdws2#
我遇到了同样的问题,但我只是添加了nuget包,并确保它在我的项目中被正确引用
然后,我可以使用以下命令访问excel文件
sycxhyv73#
我也有同样的问题。我在掘金中搜索“ClosedXML.Signed”,更新“DocumentFormat.OpenXml”,它就能工作了!
sigwle7e4#
这对我很有效:
https://social.msdn.microsoft.com/Forums/en-US/e6cc73f3-050c-4a0a-b9e5-42bf904a163f/nuget-package-manager-does-not-copy-depenencies-to-output?forum=csharpgeneral
在此复制以供后人参考:
这里有一个未决问题
https://github.com/NuGet/Home/issues/4837
尝试卸载项目,右键单击项目,编辑。
保存,重新加载,构建。
jxct1oxe5#
我检查了这里的每一个答案,但没有任何效果。我解决这个问题的方法是通过NuGet包管理器将ClosedXML回滚到v0.90.0。然后,我的错误消息变为抱怨需要DocumentFormat.OpenXML依赖项的v2.16.0。因此,再次通过Nuget包管理器,我把我安装的DocumentFormat.OpenXML的版本改成了v2.16.0。然后它就可以工作了。要让一个简单的DLL工作,要经历多么可怕的废话啊。哦,我还知道一个事实,几个月前它工作得很好,几个月后当我在项目中使用这个功能时,我才发现有些东西发生了变化。
uttx8gqw6#
如果您正在从类B引用ClosedXML,而类B被另一个应用程序A调用,则原因应该是:
当A运行时,它只在一组文件夹中查找程序集,它不知道B的依赖项在哪里。如果ClosedXML与A的可执行文件不在同一目录中,那么您可能会遇到此问题。
原始答案见此链接:How to add folder to assembly search path at runtime in .NET?