У меня есть проект надстройки для excel. Он отлично работает на моем компьютере. Но когда я устанавливаю его на клиентском компьютере, он выдает сообщение об ошибке, о котором я упоминал.
В предварительных требованиях публикации-> у меня отмечены следующие элементы:
.net framework sp1
Microsoft .net framework 4
основные сборки взаимодействия Microsoft office 2007
инструменты Microsoft Visual Studio 2010 для среды выполнения офиса
Установщик Windows 4.5
Я использую 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; установленный; }
}
// ******************************** **************************
Код, который использует класс:
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;
}
На клиентском компьютере установлен Excel 2010 установлен на нем.
Это строка кода, вызывающая исключение:
excelApp = (Excel.Application)
System.Runtime.InteropServices.Marshal.GetActiveObject
("Excel.Приложение ");
Странно то, что оно работает, когда я выполняю следующие шаги: Запускаю его на клиенте и получаю исключение. Запускаю на моем собственный компьютер (где не возникает исключений). Нажмите кнопку надстройки на созданной мной ленте Excel в приложении клиентского компьютера И НА ЭТОЙ РАЗ Я НЕ ПОЛУЧАЮ НИКАКОГО ИСКЛЮЧЕНИЯ !! { {1}} Я проверял это так много раз. Каждый раз, когда я следую этому порядку, он работает нормально!
11.
Заранее большое спасибо.
Изменить: 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();