C# 无法加载文件或程序集';DocumentFormat.OpenXml
我一直得到这个错误是VS2013C# 无法加载文件或程序集';DocumentFormat.OpenXml,c#,xml,web,visual-studio-2013,config,C#,Xml,Web,Visual Studio 2013,Config,我一直得到这个错误是VS2013 无法加载文件或程序集“DocumentFormat.OpenXml,Version=2.0.5022.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一 在myweb.config中 <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application,
无法加载文件或程序集“DocumentFormat.OpenXml,Version=2.0.5022.0,Culture=neut
ral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一
在myweb.config中
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="hjkom_med_web_udvConnectionString" connectionString="Data Source=M95;Initial Catalog=hjkom-med_web;Persist Security Info=True;User ID=HJkom-MED_web;Password=bvkeB7hh" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
**<add assembly="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>**
</assemblies></compilation>
</system.web>
</configuration>
****
我尝试过插入windowsbase和其他很多东西
我一直在寻找解决方案,有人知道如何解决吗 你可以看看这个例子 我下载了这个示例并导入了
- ClosedXML.dll
- DocumentFormat.OpenXml.dll
DLL(实时DLL在项目中已准备就绪。我使用了它们)。在那之后,我的错误就消失了。你可以试试。。我不知道为什么。但重要的是我的项目现在正在运行。我遇到了这个问题,因为我的计算机上安装了一个新版本的.dll,它运行在本地主机上,而我的服务器运行的是同一个.dll的旧版本 我刚刚更新了它,之后一切都很好
在您的情况下,请在此安装DocumentFormat.OpenXml版本2.5。在撰写本回答时,OpenXml SDK有3个版本:
- ()
- ()
- ()
要获取所需的v2.0程序集,我建议您在解决方案中的所有项目中使用上面提供的NuGet。签入Packages.config文件。在解决方案中的所有项目中都应该使用相同的文件。供参考
最近也有同样的问题 我在库中引用了ClosedXML,当我在控制台应用程序中使用库时,会出现缺少引用错误 这是因为DocumentFormat.Excel、ExcelNumberFormat和FastMember.Signed未复制到我的控制台应用程序的输出文件夹中 2种解决方案: 1) 在客户端(本例中为控制台应用程序项目)中安装closedXML nuget包及其所有依赖项 2) 要复制dll,必须在库中引用它们。 将以下函数添加到库中,并从静态构造函数调用它:
/// <summary>
/// This code is here to embeed the following libraries :
/// - DocumentFormat.Excel
/// - ExcelNumberFormat
/// - FastMember.Signed
/// </summary>
private static void EmbeedNeededLibraries()
{
Action<Type> noop = _ => { };
var lib1 = typeof(DocumentFormat.OpenXml.OpenXmlAttribute);
var lib2 = typeof(ExcelNumberFormat.NumberFormat);
var lib3 = typeof(FastMember.ObjectAccessor);
noop(lib1);
noop(lib2);
noop(lib3);
}
//
///此代码用于盗用以下库:
///-DocumentFormat.Excel
///-卓越数字格式
///-FastMember.签名
///
私有静态无效EmbeedNeedLibraries()
{
动作noop==>{};
var lib1=typeof(DocumentFormat.OpenXml.openxmltribute);
var lib2=类型(ExcelNumberFormat.NumberFormat);
var lib3=typeof(FastMember.ObjectAccessor);
noop(lib1);
noop(lib2);
noop(lib3);
}
在我的案例中,我在解决方案中的不同项目中引用了不同的版本。VS的nuget consolidate功能在这里帮助了我,因为它不仅显示了不同的版本,而且还可以方便地更新旧版本(右键单击解决方案>>“管理解决方案的nuget软件包”>>“consolidate”选项卡)。请参阅
在我的例子中,我的项目引用了Telerik.Reporting.OpenXmlRendering两个版本;一旦我删除了旧版本,这个错误就消失了。只是为了添加一个工作解决方案,在我的情况下,我在我的计算机和服务器中工作,引用不在那里,然后我添加了一个使用DLL引用的文件,但当我上传到服务器上新版本时,我只是复制了文件,因为我无法执行“正常VS部署”,像往常一样,我没有更新web.config。。。但是这些行在结尾处缺失:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="8fb06cb64d019a17" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.12.3.0" newVersion="2.12.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Drawing.Common" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.2" newVersion="4.0.0.2" />
</dependentAssembly>
</assemblyBinding>
</runtime>
也许您不需要“绘图参考”,但OpenXml部分做到了,祝您好运 你们有那个版本的程序集吗?我不太清楚你们的意思?这是我可以添加的文件吗?也许这将有助于解释,这是一个伟大的系统,目前在IIS服务器上运行,我在那里做了大量的更正,当我完成后,这些更正必须在线。当我想在VS2013中运行它时,会出现这个错误。它是一个程序集——它不只是在以太网上出现。您需要适当地下载或安装它。老实说,我只想使用nuget软件包……对于Jon,请检查您是否在GAC中提供了您试图包含的版本,当您安装SDK时,该版本应该放在GAC中。如果你一直有问题,试着使用,看看你是否遗漏了其他东西。您还可以尝试在对.dll的引用上设置Copy Local=true,看看这是否解决了您的问题。顺便说一句:我认为还需要对System.Xml的引用。Jon-我尝试过使用NuGet控制台,它说:PM>安装包DocumentFormat.OpenXml安装包:当前环境没有打开的解决方案。在第1行,char:16+安装包为我工作。谢谢@Lucas