Не удалось загрузить файл или сборку 'DocumentFormat.OpenXml

9

Я продолжаю получать эту ошибку VS2013

Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neut ral, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей.

В моем web.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 и многое другое.

У меня есть поиск и поиск решения, а кто-нибудь знает, как его исправить?

  • 4
    Ну, у вас есть эта версия сборки в наличии?
  • 0
    Я не совсем уверен, что вы имеете в виду? это файл, который я могу добавить? Возможно, это помогло бы объяснить, что это отличная система, которая сегодня работает на сервере IIS, где я делаю большее количество исправлений, которые должны быть в сети, когда я закончу. Ошибка возникает, когда я хочу запустить его в VS2013.
Показать ещё 5 комментариев
Теги:
visual-studio-2013
web
config

5 ответов

9
Лучший ответ

У меня была эта проблема, потому что у меня была установлена ​​новая версия .dll на моем компьютере, запущенном на localhost, и на моем сервере была запущена старая версия той же DLL

Я только что обновил его, и после этого все хорошо работает.

В вашем случае установите версию DocumentFormat.OpenXml версии 2.5, доступную в этой ссылке Microsoft

  • 0
    Работал на меня. Спасибо @Lucas
4

Во время написания этого ответа есть 3 версии Open XML SDK:

Скорее всего, вы указали в своей DLL версии проекта, которая была установлена ​​на вашем компьютере.
Чтобы получить требуемую сборку v2.0, я предлагаю вам использовать NuGet I, указанный выше.

1

Вы можете посмотреть этот пример.

http://www.aspsnippets.com/Articles/Solution-ASPNet-GridView-Export-to-Excel-The-file-you-are-trying-to-open-is-in-a-different-format-than-specified-by-the-file-extension.aspx

Загрузите пример и я импортировал

  • ClosedXML.dll
  • DocumentFormat.OpenXml.dll

dlls (реальные dlls уже в проекте, и я использовал их). После этого моя ошибка исчезла. Вы можете попробовать. Я не знаю, почему. Но важно, что мой проект работает прямо сейчас.

0

Была такая же проблема в последнее время.

Я ссылаюсь на ClosedXML в библиотеке, и когда я использую библиотеку в консольном приложении, я получаю ошибку отсутствующей ссылки.

Это связано с тем, что DocumentFormat.Excel, ExcelNumberFormat и FastMember.Signed не копируются в выходную папку моего консольного приложения.

2 решения:

1) установить пакет закрытого XML 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);
    }
0

Проверьте файлы Packages.config во всех ваших проектах в этом решении. Оно должно быть одинаковым во всех проектах внутри решения. для справки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню