我正在构建一个 Outlook 插件,我想知道当我们发布新版本(或至少通知用户访问我们的网站并下载/安装最新版本)时,是否有任何标准方法可以让插件自行更新?我一直在考虑做的天真方法是每隔一段时间 ping 我们的服务器以检查更新,并显示一个消息框。谢谢
以下是我想要完成的两项任务:
我打算用C#写这个.你能给我一些关于如何开始以及这将是什么类型的项目的指示?
我看不出这里有什么问题.我只想用我的Outlook AddIn将log4net写入日志文件.我的app.config文件中有以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
以下是我的启动类中的相关语句,ThisAddIn.cs(注释显示我尝试过的变体):
//protected static readonly ILog log = LogManager.GetLogger("application-log");
public static readonly ILog log = LogManager.GetLogger(typeof(ThisAddIn));
private void ThisAddIn_Startup(object sender, System.EventArgs …Run Code Online (Sandbox Code Playgroud) 我继承了使用VB6编写的Outlook 2003 COM加载项(注意:NOT VB.NET).
我需要升级它以使用Outlook 2010.是否可以使用VB6为Outlook 2010创建加载项,或者我是否需要重新实现所有内容?
我需要开发一个Outlook 2010加载项,我是Visual Studio和C#的新手,因为我主要使用PHP和JavaScript.我正在使用Visual Studio 2010,并且我使用内置的Outlook 2010加载项模板创建了一个项目.考虑下面的代码:
// file ThisAddIn.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
namespace OutlookAddIn1
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
public string displayCount()
{
Outlook.MAPIFolder inbox = this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items unreadItems = inbox.Items.Restrict("[Unread]=true");
return string.Format("Unread items in Inbox = {0}", unreadItems.Count);
}
#region VSTO generated code
/// <summary> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Outlook加载项,需要确定所选的电子邮件是否来自Inbox或Sent Items当我将其保存在我的数据库中时,我可以用folder ="Inbox"或"Sent"来标记该电子邮件.
我了解我可以将文件夹名称与收件箱或已发送邮件进行比较并确定文件夹,但是,如何确定所选电子邮件何时位于收件箱中的其中一个子文件夹中.是否有FolderType属性来检查所选电子邮件的文件夹是收件箱还是已发送(类似于识别项目类型OlItemType)?
在我的Outlook加载项中,我有以下几行.
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
MessageBox.Show("Hazaa!");
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
MessageBox.Show("Shazoo...");
}
Run Code Online (Sandbox Code Playgroud)
虽然Outlook用一个很酷的"Hazaa"来迎接我!一开始,当我'关闭它时,它拒绝对我说"Sahzoo ......".这两种方法都使用默认的自动生成代码以相同的方式注册,因此我不怀疑那里有任何错误.我能想到的另一个解释是,当应用程序已经离开GUI并且隐藏了shazooing时,将执行关闭过程.
是这样吗?如果没有,我怎么能让Outlook shazoo我?如果是这样,我怎么能直观地通知用户这样的shazoo?
编辑:
显然,由于O10,关机不再被调用,所以下面的自动生成的代码是确实是错误的(或至少不完美).由@ Christian.K提供.
#region VSTO generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
Run Code Online (Sandbox Code Playgroud) 我有一个在.NET 4.0/VS.NET 2010 C#中编写的Outlook 2010加载项.加载项扩展了Ribbon =>它添加了一个RibbonTab带有4个RibbonButtons(RibbonType属性设置为)Microsoft.Outlook.Explorer和Microsoft.Outlook.Mail.Read.
现在,如果用户单击其中一个RibbonButtons,我如何确定用户是否单击了添加到Microsoft.Outlook.ExplorerOR 的按钮Microsoft.Outlook.Mail.Read?
有人可以提供如何创建自定义 Internet 标题并将其添加到 mailItem 以及以后如何阅读它们吗?我正在尝试在发送的每封电子邮件中附加一个关键字,以便其他具有相同加载项的 Outlook 客户端读取它。
我已经用yeoman接管了以前写的Office插件。我一直在更改设置以及其他设置,但是在初次安装后,看看它已经走了多远,我相信我的Outlook客户端已经存储了某种缓存。当我尝试安装更新的版本时,它仍然保留先前版本的徽标和设置,但是在没有早期版本的系统上安装它时,一切都很好。
任何建议都会有所帮助。我尝试删除我的本地配置文件并通过重新启动Outlook重新创建它,但这似乎对整个过程没有影响。
谢谢
编辑:
我说的是Outlook独立客户端。
outlook-addin ×10
c# ×6
outlook ×5
vsto ×5
outlook-2010 ×2
.net ×1
fileappender ×1
log4net ×1
vb6 ×1