很多Visual Studio 2010的用户积极地向我们反馈使用中遇到的各种问题。当这些问题包括了VS的Crash(崩溃)时,我们往往希望能够得到一个稳定的Repro Steps(重现步骤),以及Crash的Call Stack和Dump文件。
得到Call stack和Crash dump文件的一个方法就是使用Visual Studio 2010。具体的步骤如下:
- 启动一个Visual Studio。我们将用这个VS重现Crash.
- 启动另外一个Visual Studio进程。我们将用其debug先前启动的VS.
- 在第二个VS的Tools|Options|Debugging之中,不选”Enable Just My Code”。然后在Symbols选项中选中Microsoft Symbols Servers.
- 在合适的时候(可以是一开始,也可以是在使用第一个VS一段时间快要Crash的时候),在第二个VS的Tools菜单,选择”Attach to process…”
- 在进程列表中找到第一个VS的devenv.exe.注意列表中不会显示第二个VS的进程
- 点击Select …按钮。在Select Code Type对话框中选中Managed(v4.0)和Native.然后点击OK.
- 再点击Attach按钮完成
- 在第一个VS中实现Crash
- 此时第二个VS会得到控制(会Break)。
- 通过Call Stack窗口可以得到Call Stack. 通过Debug菜单的Save Dump As,保存Crash Dump.
您如果已经使用了VS2010 Beta 2,我们很希望能够听到你的反馈。
请通过https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1为我们提供您对Beta 2的感受,建议和意见。
您如果参加下周北京的Tech Ed 2009,还可以直接向我提出反馈,尤其是关于WPF/Silverlight设计器的问题和建议。在会场,您还有可能得到来自微软的纪念品。具体安排,敬请关注本blog。
谢谢您对Visual Studio 2010的支持!
如果在安装Visual Studio 2010的最后看到这样的界面,您的Visual Studio 安装是成功的,但是最新的Silverlight 3 SDK的确是安装失败了。
在您的机器上也许已经跟随Expression Blend 3安装了Silverlight 3 SDK RTW (3.0.40624.0)版本。而VS2010 Beta2欲安装最新的Silverlight 3 SDK GDR2 (3.0.40818.0)版本。
GDR2的版本除了修正一些Bug之外,还增强了对SDK中控件的设计时支持。
所以,虽然使用RTW的版本一样可以创建,编译和运行Silverlight项目,我们强烈地建议您卸载RTW版本,安装最新的SDK。您没有必要重新安装VS 2010 Beta2。
IProvideAttributeTable的唯一任务是提供AttributeTable。AttributeTable包含了定义设计时外表(apperance)和行为(behavior)的元数据(metadata)属性(attribute)。
AttributeTable这个sealed的类并没有定义一个公共的构造函数。而且AttributeTable的内容对外是只读的。那么我们如何能够提供我们的AttributTable呢?
答案是使用AttributeTableBuilder(Design Pattern: Builder Pattern)。AddCustomAttributes()可用来添加新的属性。AddTable()则是将现有的AttributeTable内容全部加入到正在创建的AttributeTable之中。
当所有定义设计时外表和行为的元数据属性加入到AttributeTableBuilder之后,我们通过调用CreateTable()返回一个AttributeTable的实例。
WPF/Silverlight设计器大量地使用了AppDomain。在Beta 2的版本下,CLR (Common Language Runtime 公共语言运行时)需要以下的注册表的设置才能够有效率地支持多个AppDomain.
为了得到最佳的性能,您需要在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0下添加Clrhost这个key。然后再添加StartupFlags(类型为DWORD32值为5)。如下图所示:
等到产品正式发布后,这个设置将会是缺省。
对于Visual Studio 2010,除了新的产品名称(和Windows 7的命名保持一致,如Ultimate, Premium,Professional等)和新的产品图标(与.NET, Silverlight图标保持了色调的一致),开发人员最感兴趣的是产品有什么新功能,以及其性能有没有提高。
我所在的VS2010中的WPF/Silverligh Designer的产品组,非常期待听到你对Beta 2的反馈。
我们的Beta 2已经包含了所有显著的特性。从现在到RTM,我们的重点除了继续提高产品的性能外,还会根据用户的反馈对有些特性做出调整。您的反馈,我们一定会认真考虑。
另外,从现在开始的2周时间里,如果您发现了WPF/Silverlight Designer导致VS 2010 Crash的Bug,我还会在2周后为您寄出一份纪念品。(您如果参加Tech Ed China也可以在会场直接领取。)这个Bug需要是能够被我repro并且还不是已经在数据库之中的。(在很多情况下,即使是重复的bug我也会寄纪念品的。)
从这里开始安装:http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx。WPF/Silverlight Designer在所有的版本之中都提供。
谢谢您的支持!
当用户试图使用Test Rig运行负载测试时,Test Results的状态为Not Executed。点击Test run error链接可能得到这样的错误信息:
Failed to queue test run 'user@DEMO888 2009-10-10 21:44:38': Object of type 'Microsoft.VisualStudio.TestTools.LoadTesting.LoadTestStepLoadProfile' cannot be converted to type 'Microsoft.VisualStudio.TestTools.WebStress.WebTestLoadProfile'.
LoadTestSteoLoadProfile也可能是LoadTestConstantLoadProfile等不同的负载模式类型。
这是因为Controller的机器已经是VS 2008 SP1而Agent的机器仍然是VS2008 RTM。反之亦然。
务必将Agent, Controller和VS都升级为SP1以解决这一问题。注意,如果你在同一台机器上先安装了VS,然后升级为SP1,接着再安装Controller,你仍然需要将Controller升级为SP1。所以在安装了VS和Controller之后一次升级会节省时间。
为什么会有这样的错误信息呢?请参考这一博客。
当您安装了最新发布的Visual Studio 2008 SP1之后,您需要安装Microsoft Silverlight Tools Beta 2 for Visual Studio 2008以继续对Silverlight 2的开发。(而Expression Blend 2.5 June 2008 Preview 仍然继续可以使用。)
这个下载包括了Silverlight 2 beta 2的运行时,SDK, 和VS对Silvrlight的tool支持。
VS的支持来自Cider组。Cider组也提供了VS中对WPF应用程序的设计时支持。在SP1下,我们除了修正了前一版本中的许多bug,还增加了下述新的功能:
- Events tab
- Alphabetical view
- Toolbox for XAML view
- Rename
- Go To Definition/Find All References
- 对TabControl和Expander的设计时支持. 同时您现在可以删除grid line了。
- Snap lines for control margins
- 没有设计时支持的XAML将以Full XAML view方式打开。
详情请看:Community Feedback Important to the WPF Designer for Visual Studio 2008 SP1
最近这些日子,很多程序员反映,在安装了最新的Windows SDK for Windows Server 2008 and .NET Framework 3.5之后,VS2008 WPF Designer的Intellisense就不再工作了。他们不得不重新安装或者修复VS2008。
这往往是因为一个Registry Key的值被SDK的安装程序错误地删除了。
请检查HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32下,(Default)的值是否为空。如果是,你需要将其更新为TextMgrP.dll的完整路径。TextMgrP是Visual Studio Text Manager Proxy。
在我的系统上,该文件在C:\Program Files\Common Files\Microsoft Shared\MSENV\TextMgrP.dll。更新之后,Intellisense就又可以工作了。
如果您不想自己修改注册表值,也可以通过VS安装程序的修复功能,恢复原先正确的状态。
(而安装程序的问题,也会在近期解决。)
先前相关:微软将发布.NET框架库的大量源代码
在上次Blog的评论中,有人称赞道:确实,调试方便了不是一点点;这真是太cool了;很好,期待很久了!不过也有这样的评论:买一张MSDN就可以了。实际上,MSDN中并没有包含将发布的.NET Framework的源代码。
这项服务还在最后的调试阶段,很快就会对外发布。我在这个周末通过Visual Studio 2008使用了这一服务。对于.NET程序员来说,这真的是非常有助于调试,也提供了软件开发时候很有价值的参考。
为了在Visual Studio 2008中使用此服务,有以下几个要点:
- 在Debugging | General 选项中,不要选Enable Just My Code (Managed Only).
- 在Debugging | General 选项中,选择Enable source server support.
- 在Debugging | Symbols 选项中,添加Microsoft Reference源代码服务的URL。 正式的URL很快会对外发布。
首次使用时需要接受2个License:一个是symbol,另外一个是Source.
这样在调试程序的时候就可以看到.NET Framework的源代码,也可以在调试时跟进(Step into)。
比如说WinForm的Button.cs就被下载到\src\source\.net\8.0\DEVDIV\depot\DevDiv\releases\whidbey\REDBITS\ndp\fx\src\WinForms\Managed\System\WinForms\Button.cs\1\Button.cs。从文件夹的结构可以看到,.NET框架3.5下的WinForm代码实质上还是Whidbey即.NET 2.0。但的确有了一些更新。REDBITS下是.NET 3.5发布时候的代码。
即使将Winform的项目的Target Framework改成2.0或者3.0,我们一样得到上述的Button.cs. 这是因为REDBITS在安装时取代了早先2.0的程序集。
在WPF下的Button.cs被下载到\src\source\.net\8.0\WIN_WINDOWS\lh_tools_devdiv_wpf\Windows\wcp\Framework\System\Windows\Controls\Button.cs\1\Button.cs。虽然现在WPF属于DevDiv的一部分了,从这个文件夹的结构可以看到以前WPF是隶属于Windows的。
在代码的格式上,您也一定能够看出DevDiv和Windows的区别。
除了在文件中添加了几行版权声明:
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
您看到的代码与微软内部能够看到的代码是完全相同的。那些代码中的注释,还有对private或者internal members的说明,都是在此之前无法从MSDN的文档中得到的信息。
当然没有任何代码是十全十美的。我已经注意到标有HACK HACK HACK注释的代码了。
阅读代码对程序员而言是一件有趣的活动。随着Microsoft Reference源代码服务的推出,我们有更多的阅读材料了!
通过Visual Studio 2008新创建一个WPF Application项目,在没有编译的情况下打开Window1.xaml.cs。鼠标右键单击InitializeComponent();这一代码行,选择Go To Definition菜单项。我们会看到其定义在一个叫做Window1.g.i.cs的文件之中。
对WPF比较熟悉的程序员知道:在编译WPF程序的时候,MsBuild通过调用Markup Compiler将Window1.xaml编译成为一个baml文件和window1.g.cs文件。这里的g的含义是“生成的”(Generated)意思。
可是Window1.g.i.cs文件呢?
这是只有在Visual Studio编程环境下才能看到的一个文件,g的含义同上,而 i 则是“智能感知”(Intellisence)的意思。为了能够让用户更方便的使用Intellisense,Visual Studio生成并且使用了Window1.g.i.cs文件。
如果在一次编译之后再Go To Definition,您就会发现这次打开的是Window1.g.cs文件。当然在编程的绝大多数时间里面,Window1.g.i.cs文件的使用率要高的多。
----
二零零八,新年快乐!
虽然resgen.exe在.NET框架2.0下已经有了/publicClass的选项,Visual Studio 2005自动生成的代码文件只能是internal.
在Visual Studio 2008下,程序员可以选择internal或者public,如下图所示:

----
祝您节日快乐!
本Blog应该是在Internet上第一时间发布Visual Studio .NET 2003 SP1 RTM的消息。请在http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=69D2219F-CE82-46A5-8AEC-072BD4BB955E下载安装。
The goal of all of our Service Packs is to increase the overall quality of the existing product features while maintaining a high level of compatibility.
The Hotfixes and General Distribution Release Updates (GDRs) released between RTM and the end of the Service Pack customer beta period.
Any fixes addressing security issues categorized as MSRC "Critical", "Important" or "Moderate".
Fixes for product reliability and stability issues, including the crashes most frequently reported via Watson.
Fixes for common "eligible" functional issues reported by customers. "Eligible" functional issues are those that do not require breaking changes, architectural changes, or Design Change Request (DCR) level feature work, and that do not create unacceptable product quality risk and/or cost of implementation.
Fixes for the top customer and supportability issues as reported by PSS.
且说有同事使用VS开发软件,突然得到VS报错,像是如下的输出:
Error 1 Unable to copy file "Resources.cs" to "C:\Debug\Resources.cs". Access to the path 'C:\Debug\Resources.cs' is denied. CuteProj1
看起来这和文件夹或者文件的Security设置有关。是谁突然改变了这些设置?
其实,'C:\Debug\Resources.cs' 被设置成为RO(Read-Only)所以VS不原意强制去Overwrite。使用Notepad去试图更新一个RO的文件会得到一样的错误。
在VS.NET 2002和2003下,一个Solution下的所有Projects或者可以Build,或者可以Rebuild。如果是Build,VS只会对发生改变的Project编译。如果是Rebuild,则所有的Project都会被重新编译。同时也支持Clean。
如果,我们只想对Solution中的部分project做Build/Rebuild/Clean的操作,可以容易地实现么?
VS2005对此需求提供了新的支持。使用Ctrl或者Shift选中部分project后,在Build菜单和这些peoject的Context Menu中就可以选择Build Selection, Rebuild Selection和Clean Selection的命令。