VS2005开发的Office2003 addIn在客户机上启动不起来的问题

我在csdn上问的thread:

http://topic.csdn.net/u/20080419/14/c96da6e1-2e12-4e42-be08-8d910435dfe1.html

最后还是在msdn上找到了答案(是不是说明msdn的水平还是高一点呢。。。)

http://forums.microsoft.com/msdn/showpost.aspx?postid=174211&siteid=1&sb=0&d=1&at=7&ft=11&tf=0&pageid=0

http://forums.microsoft.com/msdn/showpost.aspx?postid=173940&siteid=1&sb=0&d=1&at=7&ft=11&tf=0&pageid=0

综合上面两个msdn的贴子,在尝试了把KB907417里的文件手动部署到客户机器上,问题终于解决了。。。

ms的setup project做得还是比较土,还不如我至少5年前用Wise Installation做的安装包舒服。

Extensibility.dll 文件就是不会拷过去给客户端。

 

 

强大的小软件Window Install Clean up

下载地址可以google到。推荐的原因就是它太厉害了。而且一旦自己制作setup project的时候搞出了一个bug,而且install的时候成功了。uninstall的时候不能成功进行。就惨了–软件装上去了删不掉。如果要手工删除必须把自己注册的unmanged Com反注册掉,把managed dll从GAC里面去掉,清理干净注册表等。否则如果是同一个软件,再编译后的正确版本也无法装上去:因为前一个版本没有卸掉。

这个时候Windows Install Clean up Utility 出马就搞定了。

 

<%#... %>和<%=...%>

http://www.pconline.com.cn/pcedu/empolder/wz/asp/10111/12466.html

这里说得很清楚,第一个是在DataBind()之后才调用,而第二个是程序运行前执行。

所以时间就是不一样的。主要说说第一个,<%#…%>里还可以调用c#的方法,如我的项目中的

 <%# GetAttentionTo(Container)%>。另外,现在已经不用使用DataBinder.Eval(),Eval已经是父控件(或页面)的方法。可以用this.Eval(“YYY”)调用。而且VS2005中还有自动完成提示。(经常不灵)

(XXX)Container.DataItem[“YYY”]也是<%#…%>的Container的一个常见用法,也可以参考MSDN DataBinder类。它接受Container作为参数。甚至,this.Bind(“YYY”)的写法也可以。。。

 

而上述链接里的例子说明,要使<%#…%>生效,如果是该tag在控件里,需要调用控件的DataBind(),如果直接在页面中,则需要页面的Page.DataBind().