ошибка: не удалось загрузить файл или сборку ExcelAddIn1.XmlSerializers или одна из его зависимостей. Система не может найти указанный файл

У меня есть проект надстройки для excel. Он отлично работает на моем компьютере. Но когда я устанавливаю его на клиентском компьютере, он выдает сообщение об ошибке, о котором я упоминал.

  1. Я опубликовал его, используя project-> properties-> publish.
  2. У меня стоит галочка «Включить только мой код».
  3. Я снял галочки для «брошено» и «не обработано пользователем» для «исключение не найден файл»
  4. Я настраиваю проект на клиенте с файлом «setup» в папке «publish» в моем папка проекта.
  5. В предварительных требованиях публикации-> у меня отмечены следующие элементы:

    .net framework sp1

    Microsoft .net framework 4

    основные сборки взаимодействия Microsoft office 2007

    инструменты Microsoft Visual Studio 2010 для среды выполнения офиса

    Установщик Windows 4.5

  6. Я использую JSON. это код для моего класса:

      [Serializable] 
     [JsonObject (MemberSerialization.OptIn)] 
    открытый класс documentSchemaRestInfo 
     {
     [System.Runtime.Serialization.DataMember] 
     [JsonProperty] 
    открытый двойной идентификатор {get; установленный; } 
     [System.Runtime.Serialization.DataMember] 
     [JsonProperty] 
    имя общедоступной строки {get; установленный; } 
     
     [System.Runtime.Serialization.DataMember] 
     [JsonProperty] 
    общедоступное описание строки {get; установленный; } 
     
     [System.Runtime.Serialization.DataMember] 
     [JsonProperty] 
    общедоступная строка [] поля {get; установленный; } 
    } 
     

    // ******************************** **************************

  7. Код, который использует класс:

     public List  getSchemaOfGroup (documentGroupPk groupPK) 
     {
    List  result = new List  (); 
    HttpWebRequest request = (HttpWebRequest) WebRequest. 
    Создать (ProxyFactory.baseAddress + "/ services / rest / group / "
     + groupPK.id +" / schema "); 
    HttpWebResponse response = (HttpWebResponse) request.GetResponse (); 
     
    StreamReader streamReader = new StreamReader (response.GetResponseStream ()); 
    string responseBody = streamReader.ReadToEnd (); 
     
    динамический ds = ((динамический) JsonConvert.DeserializeObject (responseBody) ) 
     .documentSchemaRestInfo; 
    foreach (динамический f в ds.fields) 
     {
    result.Add (new DocumentField (
    f.name. ToString (), f.internalName.ToString (), false)); 
    } 
    return result; 
    } 
     
  8. На клиентском компьютере установлен Excel 2010 установлен на нем.

  9. Это строка кода, вызывающая исключение:

      excelApp = (Excel.Application) 
    System.Runtime.InteropServices.Marshal.GetActiveObject 
     ("Excel.Приложение "); 
     
  10. Странно то, что оно работает, когда я выполняю следующие шаги: Запускаю его на клиенте и получаю исключение. Запускаю на моем собственный компьютер (где не возникает исключений). Нажмите кнопку надстройки на созданной мной ленте Excel в приложении клиентского компьютера И НА ЭТОЙ РАЗ Я НЕ ПОЛУЧАЮ НИКАКОГО ИСКЛЮЧЕНИЯ !! { {1}} Я проверял это так много раз. Каждый раз, когда я следую этому порядку, он работает нормально!

11. This is the stack trace of the exception

Заранее большое спасибо.

Изменить: 12. Мое приложение работает следующим образом: Когда пользователь впервые нажимает мою кнопку на ленте, появляется форма входа, и, если он авторизован, появляется форма, которую он запросил. {{ 1}} В следующий раз появится только запрошенная форма. и исключение произойдет ТОЛЬКО при первом щелчке. вот мой код для этого: (Исключения не возникает в последняя строка, , но это не относится к случаю с 7-й строкой)

            1.//If there is no ticket, means we haven't had a successfull login yet.=> 
            2.// We should show the login form instead of groups form.
            3.if (string.IsNullOrEmpty(ProxyFactory.ticket))
            4.{
            5.  okOrCancel = new LoginForm().ShowDialog();
            6.    if (okOrCancel == DialogResult.OK)
            7.        new GroupsForm().ShowDialog();
            8.}
            9.//If the is a ticket, means we have had a successful login.
            10.else 
            11.    new GroupsForm().ShowDialog();
6
задан Tina 10 December 2011 в 14:26
поделиться