Я разработал прототип надстройки C # Excel 2003 в VS2005, которая поддерживает объект с некоторыми простыми вызовами, а также отдельный RTD-класс, и все они находятся на большом существующем внутреннем стеке C #.
Все отлично работает как есть, но ...
Мне сказали, что во избежание потенциальных конфликтов с другими надстройками Excel, которые могут нуждаться в другом времени выполнения .Net, мне придется вытолкнуть .Net-код из этого процесса.
1) Это правда?
2) Может ли это быть сделано таким образом, чтобы сервер вне процесса запускался автоматически по требованию, был доступен только соответствующему пользователю (для упрощения вопросов безопасности) и не нуждался в сложной установке и т. Д., и т.д.
3) Если это можно сделать, то как?
В настоящее время мои (COM-видимые) заглушки класса начинаются:
namespace SimpleAddinMockup1
{
/// <summary>
/// Main entry point from Excel for non-real-time methods.
/// </summary>
[ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)]
public sealed class Main
{
...
}
}
и
namespace SimpleAddinMockup1
{
/// <summary>
/// In-proc real-time server facade for an Excel instance to our main server connection.
/// </summary>
/// Note: to throttle updates in Excel use 'Application.RTD.ThrottleInterval = nnn' for nnn ms between updates (default is 2000).
/// See: http://msdn.microsoft.com/en-us/library/aa140060(office.10).aspx
[ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)]
public sealed class CPRTDServer : Excel.IRtdServer
{
...
}
}
Обновление: Мне все равно было бы интересно узнать, легко ли выполнить запуск C # outproc, например, декларативно ...