C# 无法加载文件或程序集';DocumentFormat.OpenXml

C# 无法加载文件或程序集';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,

我一直得到这个错误是VS2013

无法加载文件或程序集“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个版本:

  • ()
  • ()
  • ()
您很可能在您的计算机上安装的项目DLL版本2.5中引用了该版本。

要获取所需的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