假定你已经使用免费的Visual Studio Express Edition开发了一个程序,现在你想对公众部署这个程序。 我们的话题就此开始! 创建一个新的部署工程: 1. 在“File”菜单里,点击“Add”,并单击“New Project”; 2. 在弹出“Add New Project”对话框的“Project Type”面板中,展开“Other Project Types”结点,然后选择“Setup and Deployment Projects”; 3. 在“Templates”面板中,选择你想要创建的部署工程类型; 在这个例子中,我使用的版本是Visual Basic 2008 Express Edition,所以当我打开“New Project”对话框的时候,没有“Other Project Types”这个结点。
posted @ Friday, November 28, 2008 10:08 AM | Feedback (0) | Filed Under [ VB Team Blog Visual Basic ]
答案是:当你抛出它的时候 从CLR 2.0开始,触发StackOverflowException异常的条件就改变了,用户不能触发这个异常(备注1),如果发生异常的话取而代之的是CLR会直接结束掉发生异常的进程。 但是事实并不是100%如此,用户代码仍然能够人为抛出StackOverflowException异常,当然不是通过真正的溢出错误,而是用户手动调用。这和文档上说得不一样,这里我们用一个不太规范但是很简单的程序来说明这种情况。(见备注) 当然,这种用法没什么特别的,但是我还是觉得有必要提到这点,因为最近我看了一个新讨论组的谈话记录,有人发布了些简单的异常触发代码,碰巧里面提到StackOverflowException。他的代码里直接抛出了这个异常,而且他也有足够的理由相信这个异常在产品代码中也可以被抛出,对此我真的感到非常惊讶。
posted @ Friday, November 28, 2008 9:42 AM | Feedback (0) | Filed Under [ VB Team Blog Debugging Exceptions ]
大多数XSLT程序员对于下面这段复制一个XML文件的XSLT转换都非常熟悉。 这种XSLT身份转换的应用十分普遍,因为它可以让你复制整个XML文档,并且会“访问”到每一个XML节点和属性。如果你添加一个模板,那么它就会对那些存在匹配的节点或属性进行转换,而那些不存在匹配的节点和属性只会被简单的拷贝。
posted @ Friday, November 07, 2008 2:27 PM | Feedback (0) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? Visual Basic ]
一言以蔽之:不会,任何情况都不回被截短。 我和同事前几天聊到一个有趣的案例,它涉及到IntPtr, Pinvoke以及64bit整体概念的准确性。 最终这场讨论把我们引向对IntPtr处理long类型的构造函数。令我吃惊的是,这个构造函数的是这么写的: public unsafe IntPtr(long value) { this.m_value = (void*) ((int) value); } 问题在于long类型的值被肆意地截短成一个int值。这将直接导致丢失一切越过4G的内存地址 (换言之,没有64bit的寻址)。这个确确实实放在眼前的大漏洞,使我想到这是不是有可能是个反编译器(disassembler)的bug。于是我用了.NET Reflector的IL模式。 L_0000: ldarg.0 L_0001: ldarg.1 L_0002: conv.ovf.i4 L_0003: conv.i L_0004: stfld void* System.IntPtr::m_value
posted @ Friday, November 07, 2008 2:18 PM | Feedback (0) | Filed Under [ VB Team Blog Debugging PInvoke ]
手册3告诉我们一种使用XML Descendant axis property和使用 ReplaceWith来操作混合XML的方法。这是ID转换的一种方式,我们将在下一篇文章中提到另外一种方法。这里有一个 第三章没有提到的主特性,这个主功能需要你进行完全化地功能性特性转变。那就是从一个元素中复制内部XML的概念。你可以从Node属性中获得元素的内部XML. 第三章将电子邮件对象通过特性转换将AdventureWorks示例文档转换成以原版格式保存的HTML 文档并提供它的超链接。然而,为了让第三章所作的事情简单化,我忽略了这样一件事情,那就是 元素的schema(可以在ContactTypes.xsd schema 文件中找到)既允许 元素包括邮件地址,也允许 元素作为一个辅助信息比如用电话号码将电子邮件地址替换掉,还有合适打电话等等。 元素可以包含任何ContactTypes.xsd 中其他元素的ID. 为了让 元素包含所有信息
posted @ Monday, November 03, 2008 5:27 PM | Feedback (0) | Filed Under [ VB Team Blog Did you know? ]
在前两次的手册中,我们讲了关于用ReplaceWith这个方法来进行身份转换.如果这个方法满足了你的需要,它会在你的代码中引发另外一个问题--"Halloween".让我们看看这个问题到底是怎样的,怎么样去解决.(详细的"Halloween"问题和解决方案可以参考这个文档). "Halloween"描述的场景是,你有一个以某种方式更新的数据集同时这个数据集又在被遍历的话,你会得到一个空引用的异常,更坏的是,你的代码可能会因为修改错误的数据而崩溃.例如前面两个手册用到的代码段:
posted @ Saturday, November 01, 2008 8:51 AM | Feedback (1) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? ]
我正在做一个关于用Visual Basic XML Literals取代XSLT转换的博客,我发现这个博客将会很长,所以,Avner Aharoni 和我谈了之后决定像几个月前我们做的LINQ操作指南一样把它分为多个条目并成一个系列。 先介绍一下VB XML的操作指南。这个操作指南介绍了如何在Visual Basic中使用XML Literals的快速而简单的方法。在很多情况下,我们将会参考有着直接或者是相近功能的XSLT和XPath。你将会发现用XML Literals来转换和翻译XML是一件快速而简单的事情,XML的轴属性,和LINQ到XML,这一切都是从Visual Basic 2008开始的。 首先介绍如何用XML Literals和LINQ执行简单的XML转换。每个例子都用了一个嵌入式表达,从LINQ队列或者其他的资源,比如属性或函数中返回一组XML Literals,只需几行Visual Basic代码就能完成整个XSLT的转换。
posted @ Friday, October 31, 2008 12:22 PM | Feedback (0) | Filed Under [ VB Team Blog ]
昨天,我答应写一篇关于 Visual Basic 和 Visual Studio 2008里隐藏彩蛋的文章,这些彩蛋是你们在博客帖子或会议上从未见过的。我曾提及到了一些我最喜爱的特性,在BataⅠ版本的阐述中我尽情炫耀了智能感知(intellisence)的改进,尤其是对关键字、本地变量和表达式,自动完成语句的改进。在那篇文章中,我也提到一种语法新特性-非严格委托(Relaxed Delegates),它允许你为事件(event)提供一个可替代的签名(alternate signatures)。这些都是很棒的特性--但我要告诉你一些“新”玩意! 经过队员们的民意调查,最终我们挑选出了10个最重要的特性,我以前的文章里没有提及过的。我这里只是简单介绍,有兴趣的朋友可以继续研究。首先 ,我必须从基调特性(keynote feature)开始讲……
posted @ Friday, October 31, 2008 12:12 PM | Feedback (0) | Filed Under [ VB Team Blog ]
配料: · Visual Studio 2008 (Beta2或更高版本) 类别:LINQ-ToXML 步骤: · 使用VB 创建一个新的Console Application。 · 创建RSS文档。添加以下代码到Sub Main中。
posted @ Wednesday, October 29, 2008 11:25 AM | Feedback (2) | Filed Under [ VB Team Blog LINQ Cookbook Did you know? ]
Full VB Team Blog Archive
Powered by:
Copyright © VBCTI