C# IDE Chat, November 28, 2006
These transcripts will eventually be published here, but while we're waiting for that to occur, I'll post a copy here in my blog so that people can view it.
Charlie [MSFT] (Moderator):
Welcome to the chat, we should be starting up in a little less than 5 minutes.
We've got lots of C# team members here to answer your questions and to listen to suggestions!
When you are asking questions, don't forget to use the "Ask the experts” checkbox.
Charlie [MSFT] (Moderator):
Hi, I'm Charlie Calvert, the Community Program Manager for the C# team. And it’s time for us to get started.
Keith Farmer [MSFT] (Expert):
I'm Keith Farmer, on the DLinq team. I liked the snow today.
Charlie [MSFT] (Moderator):
Let's have all the team members introduce themselves.
Charlie [MSFT] (Moderator):
And the folks who are joining us, go ahead and send in your questions and we'll begin answering them.
Cyrus -MS (Expert):
I'm Cyrus! A dev (which means I actually get things done) on the IDE team. You can think of me as the "Mr. IntelliSense" man.
Damon [MS] (Expert):
Hi, I'm Damon Tivel and I am on the C# Quality Assurance team.
Karen Liu [MSFT] (Expert):
Hi all, I'm Karen Liu and I'm a program manager on the IDE team. I work on a variety of features from IntelliSense, to formatting, to refactoring.
DJ Park [MSFT] (Expert):
A: Hi I'm DJ and I'm a Program Manager on C#. I work on the IDE and performance.
Karen Liu [MSFT] (Expert):
Q: Is C# 3.0 going to ship in Orcas or before Orcas or after Orcas?
A: C# 3.0 is going to ship in Orcas.
Charlie [MSFT] (Moderator):
Q: Charlie, is there a scope for the "C# IDE" questions we're discussing today?
A: You should feel free to ask just about any question regarding the IDE that interests you. Some ideas might be: code snippets, enhanced IntelliSense, type colorization, refactoring, improved code navigation, metadata as source, edit and continue, performance or any other IDE features or issues that interest you.
Cyrus -MS (Expert):
Q: Charlie, whats the relation between C# and LINQ
A: Decent: Great question. LINQ (like many MS things) is an umbrella term for a large set of technology. Specifically, this technology tries to address integrating the 'Querying' of many types of data sources into a first class programming construct. To do that we had to attack the problem on many fronts. On the language side (i.e. VB and C#) we came up with many new language features. Among them are extension methods, anonymous types (aka tuples), and query expressions. They are designed to make querying data easy (whether that data be in memory objects, sql, or XML). We also added new APIs like LINQ to SQL and LINQ to XML to provide query oriented APIs around those data types. We're also defining a general query pattern that clients can provide to make their stuff 'queryable'. This is being used by many teams to offer things like LINQ to XSD and LINQ to Active Directory. Does that help?
Keith Farmer [MSFT] (Expert):
Q: I'm having some performance issues adding to a SQL mobile database. What's the best way to add a lot, I mean 100,000+ of records to a SQL Mobile database without using SQL server?
A: We're C#-heads, mostly. Perhaps the SQL Server CE/ME forums would be a better place? http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=152&SiteID=1
AnsonH MS (Expert):
Q: Any plans to add more comprehensive documentation templates ala GhostDoc into the IDE?
A: There aren't any plans to add any features like this for the next release of the product. I'm always of two minds about features like GhostDoc. GhostDoc is able to infer the documentation to generate from the signature of the method that you've defined. If you can infer it from the signature, do you really need the documentation? Of course, there are plenty of people that love GhostDoc and we've heard the request before. It'll stay on our suggestion list, and we'll keep reviewing it as we plan for future versions.
Cyrus -MS (Expert):
Q: What C# IDE enhancements are planned for the next release?
A: Kirill: I don't have an exhaustive list of new IDE features. But here are a few. First off, one of our primary goals was to support the new 3.0 language (i.e. in IntelliSense). That's involving a heck of a lot of work re-architecting our IntelliSense engine to make it faster and smarter about C#. So, you should see a dramatic increase in the quality of IntelliSense provided. While it may not seem that difficult, the 3.0 language constructs introduce a lot of rich semantics that are quite hard to do quickly and incrementally. We're also trying to improve many of other features as well (like formatting) in response to some top customer requests.
DJ Park [MSFT] (Expert):
Q: Will Orcas be able to target the 2.0 framework or will it be 3.0 specific?
A: You'll be able to target frameworks 2.0, 3.0, or 3.5 for your Orcas applications.
Cyrus -MS (Expert):
Q: IntelliSense question: does IntelliSense "cache" cpp settings in any way? We've seen build errors due to building a different project than the one a file was opened from.
A: Gotdotnet: Could you clarify a bit? Are you using a project with both C# and C++? Or is this a C# only project?
Keith Farmer [MSFT] (Expert):
Q: With the inclusion of LINQ, will we get some SQL based IntelliSense? (ie drop down for columns)
A: LINQ to SQL works using classes, so IntelliSense works normally -- the IDE doesn't talk to the database to get IntelliSense information. Instead, it'll display members on your entity types just as it would any other type.
Karen Liu [MSFT] (Expert):
Q: Will I be able to use C# 3.0 to compile assemblies for .NET Framework 2.0?
A: No, you won't. You'll be able to use Orcas to target the .NET Framework 2.0 and create projects targeting only 2.0, but you won't be able to use C# 3.0 to compile assemblies for .NET 2.0.
Cyrus -MS (Expert):
Q: In what way can tuples be used as return types of methods? I mean, can I write: public (int, int) GetMinMax() { return (0,3); }
A: Kirill, you aren't allowed to do that. :( We're thinking about ways we could expose anonymous types at the global level. However, for now, our guidance is "create a new class to handle that". We're thinking about providing a refactoring to help achieve that goal.
ScottNo [MSFT] (Moderator):
Q: Could we clarify whether "next release" means Orcas or SP1?
A: When we say next release, we most certainly mean Orcas. Visual Studio 2005 SP1 is well on its way, however, and is technically our "next release." :0)
AnsonH MS (Expert):
Q: The performance changes that are being made for Visual Studio, is that just Orcas or is that for a future SP for 2005?
A: Hey Peter - which performance changes are you referring to? There were a number of performance improvements made in SP1 (which will be available soon), and we'll likely review the ones that we make after SP1 ships for future SPs.
Keith Farmer [MSFT] (Expert):
Q: What is Orcas applications?
A: "Orcas" is the next release of .NET. .NET 2.0 was "Whidbey". "WinFx" became .NET 3.0. "Orcas" will be next.
Cyrus -MS (Expert):
Q: Can we expect additional refactoring functionality in Orcas, i.e. automatically changing a class' namespace when you move it to a different folder?
A: Korben: I wish I could say that that was on our list. We definitely see the value in providing that feature. However, right now, it just didn’t make the cut. :( I'd definitely like to see us getting around to that in the future when we have more time.
Cyrus -MS (Expert):
Q: re: Q10...not 1.1? :(
A: Michael: Afraid not :(
Karen Liu [MSFT] (Expert):
Q: Any new IDE features to specifically support LINQ? Any new refactorings?
A: Yes, you'll see a variety for features that support LINQ, including things like a new formatting engine for C# 3.0 constructs, improved IntelliSense, improved quick info and refactoring support. As for new refactorings specific for LINQ, we're considering a few such as change to explict type (when using var) and creating a named type from an anonymous type. Are there refactorings or features you'd particularly like to see?
AnsonH MS (Expert):
Q: About GhostDoc, I use it more to copy the documentation from a method I am overriding than to modify or create documentation. I am more interested in that functionality than the simple derive the interface information. Also exception info is nice.
A: Good point; I've always thought that a good way to solve the copying of documentation information would be to have the IDE simply reuse the documentation from the method that you're overriding. That way if you needed to edit it, you wouldn't need to change multiple copies. Once again though, copying is the most practical solution at the moment since the IDE doesn't do that. Exception info is indeed nice.
Cyrus -MS (Expert):
Q: IntelliSense follow up: C++ projects are present, but the problem is only with the C# projects. We build the same source for both CF and Full .NET, but with ifdefs. Sometimes the compile errors indicate that the wrong ifdefs were used during the build.
A: Gotdotnet: I see. That's very interesting. I don't think that we've seen that problem before. Are you able to consistently see this? Or is it something nondeterministic? If you can get a repro for us we would *love* it if you could file a bug on this on the 'Connect' site. Also, as for Orcas, I can tell you that we're *massively* refactoring the portion of architecture related to source file handling (Which includes #ifdefs). I hope that it will help in that area!
Keith Farmer [MSFT] (Expert):
Q: Can I get a list of change records in DLINQ without using reflection?
A: Not directly, but you can try using the GetChangeText method on your data context and parsing that.
DJ Park [MSFT] (Expert):
Q: How would "targeting" .NET 3.0 be different than 2.0? Wouldn't creating a 3.0 application simply include more reference than a 2.0 app?
A: "Targeting" a certain framework simply means that Visual Studio will help you create applications for that particular framework (i.e. disallowing unsupported references). For example, a project targeting 2.0 will not allow the user to add a reference to 3.0 references.
Cyrus -MS (Expert):
Q: About the smarter IntelliSense: Will Orcas give proper IntelliSense when you use a method that has been overloaded with the same set of arguments, such as DateTime.Subtract?
A: Korben: Yes! :) Plus a lot more cool stuff. It will handle operator overloading. So (start - DateTime.Now) and then hit <dot>, you'll get IntelliSense.
Keith Farmer [MSFT] (Expert):
Q: Will there be a Query Expression Pattern => Query using Extension Methods. I'm finding that as soon as you want to use the more exotic Standard Query Operators you have to rewrite it. (you don't have to, but its easier to read when in one format)
A: Matt Warren (see the LINQ Forums) would be a better authority, but making query building easier is something we've been looking at.
Keith Farmer [MSFT] (Expert):
Q: Hey Keith we meet again lol.
A: Stalker! :)
Cyrus -MS (Expert):
Q: IntelliSense: I haven't been able to reproduce the problem on demand, that's why I'm fishing for hints of what the "nondeterministic aspect" is. We do see it often (multiple machines, developers, etc.), but haven't been able to narrow it down.
A: Gotdotnet: I'm really sorry to hear that. We would really like to get a bug from you on this so that we can investigate the problem. My guess is that it's a bug in our incremental tokenizer. It might work if you close/open the file that you're having the problem with (since that forces a full tokenization). Is this in VS2003 or 2005?
Karen Liu [MSFT] (Expert):
Q: Karen: what about Extract Method on a query? Will it automatically infer the return type and create a named type for the return type?
A: You'll be able to extract expressions inside a query expression or the entire query itself. In the case where you take the entire query expression, we will be able to infer the return type.
Charlie [MSFT] (Moderator):
Q: Hi, Is there a way compile my C# program using devenv.exe or nmake.exe from a network server which installed the VS2005 IDE?
A: Yanco: Have you tried just using MSBuild or NANT? Can you tell us a little more about the problem you are having?
AnsonH MS (Expert):
Q: Any plans to provide WYSIWYG editing of XML documentation comments in the IDE, or better integration of Sandcastle in general?
A: No plans for more integrated editing at the moment, though it's another one of those features that we've discussed a lot. I don't know what Sandcastle's plans are. It's possible they plan to write an add-in that would integrate their functionality better. Shoot me a mail at ansonh@microsoft.com and I'll find out more for you.
Karen Liu [MSFT] (Expert):
Decent, mine is karenliu@microsoft
Cyrus -MS (Expert):
Q: What is new in 3.0 with respect to the debugging? Any exciting new features??
A: Prasanna: The debugger team is a different team than ours. However, we do coordinate on some features. One new feature in debugging that we're responsible for is a better debugging experience for IEnumerable objects. Specifically, we'll evaluate IEnumerable so that we can show you what values you will be getting out of it. As you can imagine this is incredibly useful for query debugging. Otherwise you just have this opaque query object that you can't do diddly squat with. Now at least you can see if you're going to be getting reasonable values out of it!
AnsonH MS (Expert):
Q: Anson: Specifically post SP1 beta performance enhancements (assuming SP1 RTM won't be that much different then beta)...
A: We don't have any planned for a future SP (you're right in that SP1 RTM will be similar to the Beta), but if there are performance problems that you think need to be addressed (and aren't by SP1), please let me know what they are and we'll see what we can do.
DJ Park [MSFT] (Expert):
Q: @DJ: So, even though 3.0 aggregates 2.0 you can't use 3.0 added assemblies like WPF without "targeting" 3.0?
A: If you're working in a project that targets 2.0, then references for 3.0 specific features will be grayed out in the "Add References" dialog. This doesn't mean that you can't browse for the reference and manually add the reference even though code would most likely break as a result.
Karen Liu [MSFT] (Expert):
Q: Are we going to see some bigger step in closing the gap between VS IDE helpers and ReSharper add-in? There was a litle improvment in VS 2005, but there are many that are missing, and some of them are not as good as in Resharper.
A: boban - With regards to ReSharper in Orcas, you'll see a few IDE enhancements, but the majority of features will be focused on design-time support for LINQ. We definitely want to move closer to some of the features that ReSharper currently has though and we are always looking for more ways to make developers more productive. If you have a set of top features that you really use in ReSharper, I'd love to hear more. Feel free to follow-up at karenliu@microsoft.com.
Charlie [MSFT] (Moderator):
A: We've got plenty of time left. Keep those questions coming. There are lots of experts here to answer any questions that might be on your mind. These guys are hungry to answer questions. Give them lots to work with....
AnsonH MS (Expert):
Q: Regarding the GhostDoc discussion: Some official way to "inherit" documentation when overriding methods would make GhostDoc less necessary. In fact, I'm surprised that's not the default behavior of the compiler.
A: This is a two sided coin. One way to look at it is that the documentation generator can simply take care of this. The tool would simply look for all overridden methods and generate the documentation based off of the method that they override. That way you don't really need an official way to document them, since it would be taken care of by the tool. On the other hand, if the IDE doesn't understand this, then you won't get the comments in the quick info that appears. I agree, this is a hole that we need to fill.
Cyrus -MS (Expert):
Q: What are, in a nutshell, the most important improvements and new features in Orcas?
A: Korben: Without question the most important C# improvement and feature in Orcas is the 3.0 language. It's an incredibly step forward in making more power available to you and for making programming simpler and safer. However, the language improvements are large and deep and it's taking a considerable amount of man power just getting that enormous spec change supported. We prioritized the compiler work and IntelliSense work ahead of pretty much everything here. First, because without the compiler the new language is pretty much useless. Second, because without IntelliSense, using the new constructs would be very frustrating since you wouldn't get the same level of experience in 3.0 as you were used to in 1.0 and 2.0. Now, on top of that, you'll see a whole host of smaller improvements across the board. We have been working on every feature and working on both fixing bugs and fitting in smaller improvements that we thought we had the time for. So, overall it should be a great improvement over 2005.
Cyrus -MS (Expert):
Q: I've heard many complaints about IntelliSense. I haven't seen most of what people are complaining about, largely they're not reproducible.
A: Peter: any more info would be fantastic. I'd love to be able to help get rid of any and all complaints with IntelliSense!
AnsonH MS (Expert):
Q: @Anson: I've started compiling a list; I just haven't had the time to complete and mail it... There are many areas though...
A: That's great Peter, thanks. We will, obviously, address as many as we possibly can. The sooner we know about them, the better chance we'll have of getting them in Orcas and any future SP.
Cyrus -MS (Expert):
Q: IntelliSense: VS 2005. Closing the files usually makes it go away, but I don't know how to make the problem come back. Never happens in MSBuild, only in the IDE. Setting "external compiler" variable seems to help, but breaks IntelliSense.
A: Gotdotnet: I see :( Well, that definitely sounds like a bug in the incremental tokenizer. Unfortunately, I don’t think we've seen that, and so it most likely wasn't fixed for SP1. If you can ever figure out what you were doing that made it happen (Even just a general idea), please give us a bug and we'll work hard to see if we can uncover what the root cause is. I'm very hopeful though that this is gone from our current bits (which you'll see in the beta) given all the work we've done in improving our architecture here.
Karen Liu [MSFT] (Expert):
Q: Active State's Komodo editor allows one to see changes to color syntax changes real time in a modal window. Is there anything such like that planned for the next version? I find it a pain to change colors apply...then repeat the process.
A: Nothing planned right now. This is a good suggestion though. We'll take it as feedback as we're planning for the future.
Cyrus -MS (Expert):
Q: I have a development team who want to use their laptops for coding without installing the VS2005, so we are looking to install the compiler on the LAN instead of on each single machine.
A: Yanco: The C# compiler is itsy bitsy :) And it comes with the .Net runtime (just 20 MB). Would that be an ok install for their laptops?
Keith Farmer [MSFT] (Expert):
Q: Could you please provide us with a starting point to learn LINQ? Maybe a couple of links to get us up to speed on LINQ - some introductory articles maybe?
A: LINQ Forums: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=123&SiteID=1 Many people here also post there, as well as a variety of MVPs. Also try http://blogs.msdn.com/charlie/archive/2006/10/29/technical-links-to-linq.aspx.
Cyrus -MS (Expert):
Q: If an exception occurs in a multiline anonymous method, the line and column numbers always refer to the first line, even though an anonymous method can be multiline - this makes it difficult to figure out what exactly went wrong inside the anonymous method
A: Kirill: I wasn't aware of that. And that does sound like a rather sucky user experience! I'm going to file a bug for you on this so that we can try to do better in Orcas. This will be especially important as people start using lambdas (which are pretty much just like anon-methods). Anything else you'd like to see improved?
Cyrus -MS (Expert):
Q: @Cyrus: If I can't reproduce it I don't follow through with it (no point, it will just get ignored). Some comments are "IntelliSene is broken" or "IntelliSense doesn't work with C++"--which are vague and can't really be followed up...
A: Peter: Something as vague as that will probably get a "no repro" :( However, if you can give us your project, and sort of tell us what you were doing at the time (i.e. I was typing in this method, and all of a sudden things broke), then we can try and figure out what's wrong. I promise!
ScottNo [MSFT] (Moderator):
Q: Hey guys. I have not heard much about any "upgrades" to ASP.NET or ADO.NET for .NET 3.0 and beyond. Are there any improvements or major overhauls to look forward to?
A: Hi Andrew. First, to clarify, .NET 3.0 is .NET 2.0 with a set of additional components - Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), etc. Orcas is the next version of the .NET Framework, and will have some improvements to ASP.NET and ADO.NET. First, ADO.NET: this blog is probably your best bet for news and information on future versions: http://blogs.msdn.com/adonet (here's a post advertising their October Orcas tech preview: http://blogs.msdn.com/adonet/archive/2006/08/15/701479.aspx). As far as ASP.NET improvements, Beta2 of a great new framework is available for developing AJAX apps: http://ajax.asp.net/Default.aspx. You might also try Scott Guthrie's blog for the latest in ASP.NET news, tips, and tricks: http://weblogs.asp.net/scottgu/.
Karen Liu [MSFT] (Expert):
Q: On performance in Orcas: will the navigation bar be less of a strain on the CPU than in VS2005? I like it a lot, but not as much as I like a smooth coding experience, without VS lagging for half a second after virtually each letter in a method definition.
A: Yes, this is definitely a place where we know we have a performance issue. You'll see some performance improvements around the navigation bar in Whidbey SP1 and even greater improvements in Orcas.
DJ Park [MSFT] (Expert):
Q: @DJ: sorry, I'm still not getting it. If 3.0 specific assemblies simply build on 2.0, why would that "break"?
A: To clarify, if a project is targeting 2.0 and it has references that aren't supported by 2.0, then the app will break when it is deployed on a machine that only has .NET 2.0 installed because required assemblies (i.e. Avalon, Indigo, etc.) aren't present.
Cyrus -MS (Expert):
Q: IntelliSense: OK, will do. Also, our solution is huge (120+ projects), so I'm worried that may be a factor. Otherwise we'll muddle through and hope Orcas is better. ;)
A: Gotdotnet: We made some pretty enormous changes to our architecture with regards to how background tasks work. Specifically, we moved to an architecture where race conditions between threads should be completely eliminated. It is possible that the problem you're seeing is due to a race condition and that the large solution size is exacerbating it. It would be fantastic to know if you still have this problem once the beta of orcas comes out. If you still run into this after that then this is really serious and I would love to work with you to track down this little nasty bug and to squash it once and for all!
AnsonH MS (Expert):
Q: I often see much grief from developers in the performance and reliability of the IDE in VS 2005 (include SP1 beta). Is there a specific mandate to address that or avoid similar problems in Orcas?
A: We're committed to performance and reliability, but I doubt that really answers your question. I posted a video that discusses more specifically what our plan is to tackle performance in the C# IDE/language service space (I think you've seen it). I expect we'll post a written version with more detail soon as well. We are going to make every effort to test for both performance and stress internally, but one of the things that helps the most is when we get feedback externally. The problem with testing performance and stress is that it's difficult to predict all of the variables (the matrix is enormous - machine configuration, platform, .NET framework version, etc.), so we definitely rely on the information we receive from CTPs and Betas as well.
Karen Liu [MSFT] (Expert):
Q: Could you please provide us with a starting point to learn LINQ? Maybe a couple of links to get us up to speed on LINQ - some introductory articles maybe?
A: This is also a good starting point for LINQ. http://msdn2.microsoft.com/en-us/vcsharp/aa336745.aspx. Also here.
Cyrus -MS (Expert):
Q: @Cyrus: I'll see what I can dig up from folks the next time I encounter stuff like that, thanks.
A: Peter: I would really appreciate that! Also, it would be good if we could get a bit more information about how "IntelliSense isn't working". Does that mean a completion list doesn't come up? A completion list comes up with the wrong information in it? Goto def isn't working? Colorization is bad? Etc. etc. :) That would be really helpful. Thanks!
DJ Park [MSFT] (Expert):
Q: @DJ: Ahh, okay. Forgot about the "ClickOnce" aspect of the target, thanks.
A: No problem. J
Cyrus -MS (Expert):
Q: Cyrus, I think my question keywords are "remotely compiling". Since I also have lots of other modules still using *.mak files and *.sln.
A: Yanco: Followup. Hrmm. I would think that something like this would be possible. But I'm not sure how easy it would be. Have you considered using a source control system like Subversion or VSS so that all those files can be synced to the developers machine, and then update the build scripts that they run so that the final output is placed on a server? Also, I think VS Team Server has a feature called Team Build that might be able to help you out here. However, I don't really know much about it. Google will probably be your friend here :)
Karen Liu [MSFT] (Expert):
Q: Will the user be able to specify on that the start page only solutions be shown without projects, in the next version? I think in solutions and not projects and the clutter gets to me. <g>
A: Unfortunately, this won't be in the next version. This is good feedback though.
Damon [MS] (Expert):
Q: VS2003 had a feature to sync the class viewer (CV) with the current edit caret location. VS2005 either has it buried, or the feature has been removed. Will the class viewer be improved? I preferred the 03 CV over the 05 CV.
A: Hi, OmegaMan. VS 2005 has the same functionality, but it has been hidden in the C# profile. Please check out http://blogs.msdn.com/ansonh/archive/2005/12/09/502020.aspx for how to expose Synchronize Class View functionality in VS 2005.
Keith Farmer [MSFT] (Expert):
Q: If LINQ works as well as we'd like it to, do you guys have any predictions of whether it may eventually negate the need altogether for knowing T-SQL for general data queries and updates? Is this part of the LINQ project goal?
A: Well, from the point of view of LINQ to SQL (as opposed to the other LINQ implementations), I haven't written a bit of SQL in the past year that hasn't been specifically toward debugging our query translation pipeline. :)
ScottNo [MSFT] (Moderator):
Q: Will there still be a bundled crystal reports component and what version will this be based upon (if you know)?
A: Crystal Reports will be in the Visual Studio Orcas box. I'm not exactly sure which version it is - I believe it is at least somewhat related to the Visual Studio 2005 version.
Cyrus -MS (Expert):
Q: On strings in C#: Since we all know that += is pure evil, is it conceivable that the operator+=() for string is implemented using a StringBuilder? The performance overhead *should* be minimal, right?
A: Korben: The answer to all possible perf issues is always: measure, measure, measure! If you're not seeing a perf problem, then it's not a problem! That said, I think the problem people have with += is that it will create a new string builder every single time that line is executed. i.e. if you have that in a loop then that could be a lot of StringBuilder allocations as well as additional GC pressure. However, if it's not a problem, don't worry about premature optimizations of your code. Work on clarity and architecture first. Performance can always be achieved once you have a good foundation.
AnsonH MS (Expert):
Q: @Anson: yes, I've seen the video. Thanks BTW, they're helpful even if you don't get much feedback on them. Anyway, that dealt more with performance from the language aspect (IntelliSense, compiler, etc.); but that's not the whole user experience.
A: Very true - I specifically own the experience from the language aspect, but I'd be more than willing to help communicate other performance issues as well. DJ is also involved in performance planning and works with the VS performance team regularly, so I'm sure he's interested in your feedback as well.
AnsonH MS (Expert):
Q: @Anson: maybe I'll mail them off one-by-one? Unless you mind the many emails that may generate?
A: Feel free to mail them in whichever way is most convenient to you. ansonh@microsoft.com - many mails with a single issue in each is fine.
Cyrus -MS (Expert):
Q: @Cryus: off the top of my head, the only thing I can think of is: http://blog.stevex.net/index.php/2006/07/27/intellisense-in-visual-studio-is-still-broken/, again very vague. But that's the impression of IntelliSense with a large group of people.
A: Thanks Peter. Unfortunately there's just far too little information to go on in his post :( Is he in VB, C# or C++? What is he doing? How is IntelliSense broken? Just getting a small bit of information would be very helpful.
AnsonH MS (Expert):
Q: @Anson: one of the most prevalent is the references dialog. Also, when I right click the toolbox and select "choose items" VS goes ghost for at least 20 seconds. (SP1 Beta)
A: When you say the references dialog, do you mean the tool window that appears when you select "find all references", or the preview window changes dialog that appears when you're performing a refactoring? The type of information that would be great to gather is solution size, project type, the code element that you're trying to find references to (we do optimizations based on accessibility for example), project size. When you're selecting items for the toolbox, are you often choosing COM/ActiveX components, or do you usually want .NET ones?
Keith Farmer [MSFT] (Expert):
Q: Q: What guidance do you suggest for explaining how DataSet's fit with DLINQ. DataSets seem to have the upper hand on multi-tier projects, DLINQ for local.....
A: DataSets are effectively in-memory tables. Typed datasets have been (in my experience, at least) non-trivial to create and maintain. LINQ to SQL's model is much cleaner for constructing strong-typed objects for holding data. For retrieving data from a database, LINQ to SQL allows you to describe the query to send to the server (the syntax of which may vary from database to database), whereas DataSet is typically filled using a query that the developer specifies in a string. That said, there is a LINQ to DataSet implementation to help marry the two somewhat.
Cyrus -MS (Expert):
Q: I know that if I write a LINQ statement in C# I can see its SQL representation and can test that, or maybe view what is the problem if one exists. Is it possible in the other direction? I will give a T-SQL code and to try parse the statement in LINQ express?
A: Boban: Absolutely. Off of the DataContext object there are several methods to help with debugging/logging. You can reassign the log output stream to something like Console.Out. You can call GetQueryText (or something like that) to see what the SQL is. Cheers :)
Cyrus -MS (Expert):
Q: If you rename a method parameter using Rename refactoring, is your test coverage of this scenario sufficient to ensure that nothing unrelated in other parts of the project gets renamed?
A: Kirill: Renaming a method parameter should only affect symbols that bind to that parameter. The only time it would spread beyond that would be if you checked the boxes that say "rename in comments and strings". Of course, it's always possible there's a bug here... have you seen any problems in this area?
AnsonH MS (Expert):
Q: @Anson: Sorry, references dialog as in right clicking project "References" in the solution explorer and selecting "Add Reference". Adding items to the Toolbox is a separate issue...
A: I see. I'll note that down and follow up with the references folks. This is generally slow because it enumerates all of the COM components in the registry. Perhaps we could split out the tabs. The toolbox adds another layer in that it scans your current projects for user controls to automatically populate itself; it turns out that's an expensive operation. I'll talk to that team as well and find out their Orcas plans.
Cyrus -MS (Expert):
Q: @Cryus: I believe SteveX was working in C++ at the time; but that's only detail I have at the moment...
A: Peter: It's my understanding that the C++ IntelliSense problem is *brutally* hard. There's an enormous number of hard language issues they have to deal with (like macros, templates, *huge* amounts of stuff included, etc.) that make accurate IntelliSense just really, really difficult. I know that in our project C++ InteliSense is often spotty as well. Unfortunately, we can't help much with this since each language team handles IntelliSense individually (since it's a problem space that's so language specific).
Keith Farmer [MSFT] (Expert):
Q: Keith Farmer: Wow. A YEAR of no SQL code!! I know it’s not your department, but do you think this will influence major changes to future SQL Server versions where-in it can be a lighter-weight product handling data and XML, easily accessed from i.e. C#?
A: Before I joined Microsoft, I suggested it'd be a nifty idea to be able to ship query expressions directly to the database server. I know some users have expressed the wish to do away with the SQL side of the database altogether. But, of course, there's a large investment in the industry in keeping SQL around. I Am Not An Industry Analyst, but I wouldn't (personally) expect much in the way of getting rid of the SQL component of your typical RDBMS server.
Cyrus -MS (Expert):
Q: Cyrus: I think I've seen a problem when checking Rename in comments and strings where it renamed in ALL comments of the project... which might be expected behavior, but was very unexpected for me :)
A: Kiriall: Yes. That's by design. We don't know how to prioritize any particular strings/comments over any other strings/comments. It's unfortunate, and we might want to give a warning in that dialog that that's about to happen. Sorry for the inconvenience!
AnsonH MS (Expert):
Q: documentation: exactly. Also, if the IDE isn't involved in the inheritance of documentation, then you'll get compile warnings about missing documentation. I'm thinking maybe new XML tags that explicitly state "same as" or "similar to" parent.
A: Yep, that's not a bad idea. Explicitly stating it would definitely make it easier on post processing tools.
Keith Farmer [MSFT] (Expert):
Q: Let me try to change my last question a bit. What are the chances of LINQ being Step 1 to altering an RDBMS wherein it is no longer manipulated by T-SQL and instead works directly with a language like C#?
A: See [A75]
AnsonH MS (Expert):
Q: @Anson: in terms of project size: bare-bones. If I create a new C# WinForms project, VS goes ghost for ~20 seconds if I try to add an item to the toolbox or add a reference to the project before I event choose anything from either...
A: Yep, I understand the scenario now. I'm not sure what the Orcas plans are, but I'll find out.
Charlie [MSFT] (Moderator):
Q: Regarding feedback. This is a sore point for a lot of people. Feedback on Connect has the appearance of simply being ignored. Some people have stopped providing feedback with that tool simply because of that...
A: Peter, we do spend a considerable amount of time looking at all the feedback on Connect, and we take it seriously. Each question is handled by PMs who discuss the issue among themselves and reply to the person who submitted the bug or suggestion. You had some interesting ideas in an email you sent me the other day, and we have been talking about them among ourselves also. I will get back to you about that soon.
Cyrus -MS (Expert):
Q: Will there be more task-specific intrinsic statements such as lock() in C# 3.0? I love lock()!
A: Korben: hrmmmmmmmmm. I can't think of anything concise like that off the top of my head. Two things being considered were: InfoOf(...) and Invoke(...). InfoOf was like typeof in that it will give you the XXXXReflectionInfo object for any C# symbol (like a type, method, property, etc.). 'Invoke' was a simple way to invoke a delegate without having to do a copy to local + null check. However, both were deemed not valuable enough to make the change in this version. Do "query expressions" count as a task-specific intrinsic?
AnsonH MS (Expert):
Q: @Anson: and this is on two different computers (both dual core running over 2 GHZ)...
A: Yep, this is likely the registry enumeration taking a long time.
Charlie [MSFT] (Moderator):
Q: Mods: could you remove the noise from the guest chat please?
A: Kirill, I've been chatting with these people, and now warning them about their off topic comments. If it goes further, I'll start kicking them off the chat. Thanks for your patience.
Cyrus -MS (Expert):
Q: Cyrus: providing a scope option in Rename with preview dialog should be enough I guess: Scope = this class, this code compile unit, this project, this solution
A: Kirill: That's not a bad idea. Karen and DJ are the PM's for this feature and I've passed this feedback onto them.
Cyrus -MS (Expert):
Q: Speaking of rename, I don't have an exact test case, but the rename smart tag refactoring sometimes seems to get confused when I edit a name then attempt to undo my changes.
A: Peter: Yup. That's a known problem. Unfortunately (thanks to me), we over-engineered the rename smart tag. So it can be very smart, but very dumb at times (esp when an undo happens). My bad :( I'm pretty sure we've fixed this for Orcas though.
Cyrus -MS (Expert):
Q: @Cryus: will technologies like Pheonix help that in future versions?
A: Peter: sorry, it's hard to follow all the threads, can you tell me which topic you're following up on?
AnsonH MS (Expert):
Q: @Anson: don't get me wrong; I understand why the references dialog is slow, but it shouldn't block the GUI thread (hence the ghost window) for that length of time... Just doing the work in a background thread while updating the dialog once/sec is better..
A: That seems reasonable. One reason we haven't invested hugely in that area is because our expectation is that adding references happens a lot less frequently then other scenarios (typing, adding files, etc.). If it's becoming a pain point though, we'll look at it again.
Charlie [MSFT] (Moderator):
A: There is now about 10 minutes left in the chat. It is time to start preparing your final questions.
Karen Liu [MSFT] (Expert):
Q: DExplorer: right now it's faster for me to request a search 2500 miles away via Google to find help while using Visual Studio 2005. Can someone outline some details on changes to DExplorer (I'm considering this part of the UI used when developing w/C#)?
A: There are a few things that are being considered for DExplorer improvements, as well as a variety of other help channels. For DExplorer viewer itself, there are plans being considered to decouple this from VS, so that improvements and new releases can be shipped more often. The other improvements that you'll see on MSDN online and through VS help integration is better search, through localized context, better help filters, better online search integration (a new search provider is being used that returns results using MSN search).
Cyrus -MS (Expert):
Q: @Anson: don't get me wrong; I understand why the references dialog is slow, but it shouldn't block the GUI thread (hence the ghost window) for that length of time... Just doing the work in a background thread while updating the dialog once/sec is better..
A: Peter: I agree with you. You should see a spinning icon with no blocking while the dialog comes up. Unfortunately, it's just a matter of resources over here. We don't have lots, and while it would be awesome to address all these issues, they sometimes don't make the cut. Just know that we are totally in agreement and that we'd really like to get to all these issues! :)
Damon [MS] (Expert):
Q: @Damon : Please redo the link for Class view link.
A: The link is http://blogs.msdn.com/ansonh/archive/2005/12/09/502020.aspx
Charlie [MSFT] (Moderator):
A: About five minutes left. If there are any final questions, this is the time to get them in.
Cyrus -MS (Expert):
Q: Any chance of being able to specify non-C# projects as a "reference"? Having the "this must build before me" info in the solution file seems rather error-prone. Ex: a C# app that needs to P/Invoke a C++ DLL. Auto-copying the DLL would be nice too.
A: Gotdotnet: No chance for Orcas. But we're looking into this for a future release. The problem here is that it's incredibly difficult to have Project-2-Project references across languages since every language has a different architecture for handling symbols. We can do Project2Project with C#-2-C# since we handle all the symbol tables and we know how to communicate that information properly.
Cyrus -MS (Expert):
Q: I would love to see a forward-reference search like in .NET reflector, so 'used by' (like there is in VS2005) but also 'uses'. Is there any chance of that happening?
A: Korben: We have "find all references" already in 2005. If that's not what you're talking about, then please clarify the difference for me! Thanks!
ScottNo [MSFT] (Moderator):
Q: What are the new P2P enhancements for C# in the new .NET Framework?
A: Sorry - we aren't very well-informed on this aspect of .NET Framework development. You can do about as well as we can by using a search engine or scouring blogs.
Charlie [MSFT] (Moderator):
Q: @Charlie: looking forward to it. It's a bit of a slippery-slope with the "love-to-hate-Ms" zealots out there. But, it's quite easy to get the impression that "can't repro" is used too frequently...
A: Peter: I'll keep an eye out for the "can't repro" issue. But no one on the team would put a question off intentionally. We truly want to know about problems and want to fix them. The anti-MS crowd is always out there, but fortunately we also have lots of fans.
Karen Liu [MSFT] (Expert):
Q: Well, I guess I'm out of questions. Thanks a lot for your time folks and good luck with shipping Orcas! Keep up the good work! We can't wait! :)
A: Thanks for joining!
Cyrus -MS (Expert):
Q: @Cryus: Pheonix, as it relates to consolidating IntelliSense for all languages...
A: Peter: we're actively looking at that problem. It's definitely enormously valuable (imagine cross language refactorings!), but also really, really difficult. Pheonix's work will most likely be invaluable here.
Charlie [MSFT] (Moderator):
A: Okay, time is up for this chat. Thank you for your questions. We will answer the remaining questions and then sign off.
Charlie [MSFT] (Moderator):
A: Thank you for coming to visit!
AnsonH MS (Expert):
Q: @Asnon: yes, they don't occur frequently; but creating a project, adding a reference, then adding something to the toolbox--done in succession--could take up to 5 minutes...
A: Fair enough - I'll take another look and chat with the references folks. Shoot me a mail with other scenarios and I'll follow up.
Cyrus -MS (Expert):
Q: @Cyrus: I understand, but from an end-user's point of view who will be stuck with VS2005 for at least a couple more years, resources on other projects (like LINQ) is irrelevant to them...
A: Peter: I appreciate the problem. But that can be said of all software projects. The new stuff being worked on doesn't help the people on the current version. I'm not sure what I can do about that :(
Karen Liu [MSFT] (Expert):
Q: I've start to follow the instructions on free elearning about creating a first project using WCF. There was a problem when creating app.config content for WCF. What is the problem? Is this elearning not updated, or it's my installation problem.
A: What kind of error were you getting? This really depends on which preview version of WCF you were running and which one the elearning site refers to.
AnsonH MS (Expert):
Q: It seems that when I un-maximize the editor to a specific size, it remembers those settings even after a maximize and close. Upon a new session the maximized state is ignored and the changed size is brought up...anyway to counter that?
A: I've looked at this question for a bit, I'm not quite sure if you mean the editor window (i.e. you have the environment set to MDI) or you mean VS as a whole. There isn't a default way to circumvent this behavior if you mean VS as a whole; however, you could potentially create an applicaiton that launches VS, gets the window handle, and then sets its size explicitly.
Cyrus -MS (Expert):
I'm going to stay on longer if I didn't get to anyone.
AnsonH MS (Expert):
Q: Thanks for the chat folks, much appreciated...
A: Thanks for coming Peter!
Charlie [MSFT] (Moderator):
Q: @Charlie: looking at details of service packs and hot-fixes there's no correlation between fixes and Connect issues, which doesn't give any feedback to the community that they're Connect issues make a difference... I know it's small and...
A: That's actually an interesting suggestion. We do respond to particular connect bugs, of course. But I'll see if there is a way to connect a bug to a particular fix.
Charlie [MSFT] (Moderator):
Q: @Charlie: There's a VS quality thread going on in one of the lists at discuss.develop.com that outlines a lot of discontent with quality and providing feedback. A certain part of the community has simply given up providing feedback.
A: I've seen this, and I will respond to you offline.
Charlie [MSFT] (Moderator):
Q: @Charlie: It doesn't represent reality; but it would go a long way to making the community happy...
A: I'm with you Peter, and we can talk more about ways to make this happen.
Keith Farmer [MSFT] (Expert):
Q: I’m using the latest db2 .net 2.0 data provider and I am building a query against a remote db2 database. Selecting a table takes a long time – a really long time. Also canceling an outgoing query locks up the IDE...is it the data provider or IDE or both?
A: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=45&SiteID=1 The people at this forum may be able to help you.
AnsonH MS (Expert):
Q: @Anson: The primary window, not set to MDI editing, with no undocked panes. Un maximize...work remaximize. Close IDE. Restart IDE. 75% of time it does not start in the maximized state (VS2005)
A: Oh, I see. It's pretty easy if you want it to always be maximized; right-click on the start menu icon, select Properties. There will be a run label. Select "Maximized" from the drop-down.
Cyrus -MS (Expert):
Sweeeet