We know many of you have been testing the Visual Studio 2008 Beta 2 VPC images, http://msdn2.microsoft.com/en-us/vstudio/default.aspx. It has been brought to our attention that the current Visual Studio 2008 Beta 2 VPC images will expire on November 1, 2007, rather than March 15, 2008 as originally announced. It is strongly encouraged that you take all necessary steps before November 1, 2007 to back up all your projects and move your Team Foundation Server data to an alternate location. For instructions on moving your TFS data please refer to the article Moving Team Foundation Server, http://msdn2.microsoft.com/en-us/library/ms404879(vs.90).aspx, located on the MSDN Library.
REQUEST: As this change impacts many members of the community, assistance you can provide spreading the word is greatly appreciated. So please share this information with the community any where you see fit – blogs, web sites, user groups, newsletters, etc.
For the latest information and up to date information on this please refer to the Visual Studio Developer Center, http://msdn2.microsoft.com/en-us/vstudio/default.aspx
A short Frequently Asked Questions (FAQ) is listed below:
A. This is still being researched, however, currently the understanding is that customers will NOT be able to access their date after November 1st unless the data is moved to an alternate installation location.
A. Again there is still research being done, however, from the current understanding of the problem resetting the system date back DOES NOT re-enable the OS image.
If we have any further information to share will be sure to let you know.
Thank you for helping us spread the word.
What a great time to be had a development conferences. Putting that many smart people in one room should be illegal honestly. Two solid days of .NET energy (and one adobe flex talk, ...<blink>) - Culminated with a 4 hour presentation by Scott Guthrie on the new Visual Studios 2008 / .NET 3.0 and 3.5 features.
In all the examples we've seen so far, we've returned simple strings, integers, or a standard type / value. That's all fine and good, until we have something a little more complex to return, or need to return a list or array of something, or a list of type. In the following example I'll demonstrate through code how to accomplish just that.
I'm going to go ahead and fire up my service to check it and test the hello world example, once I'm done with that, we can move on!
<?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://tempuri.org/">Hello World</string>
Ok, I hope everyone checked their service, now...to create the complex type that we'll be returning, we need are going to add a new class file to our project, and call it widget.
I'm going to keep the example simple, so I've just wired up two properties, with their private members, and a default constructor with one overload so that I can new it in one line.
Public Class widget
Private _Name As String
Public Property Name() As String
Set(ByVal value As String)
_Name = value
Private _Price As Decimal
Public Property Price() As Decimal
Set(ByVal value As Decimal)
_Price = value
Public Sub New()
Public Sub New(ByVal Name As String, ByVal Price As Decimal)
_Price = Price
_Name = Name
Ok, so back to our webservice to do something with our widget! I'm going to mock up 5 widgets for this example, normally you'd connect to your datasource or collection object to get real life data.
Public Function GetWidgets() As List(Of widget)
Dim tempWidgets As New List(Of widget)
For I As Integer = 1 To 5
Dim tempWidget As New widget("Name:" & I, CDec(I))
I can verify this is working by running the service again and getting this result:
<?xml version="1.0" encoding="utf-8" ?>
- <ArrayOfWidget xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
Ok, now for the fun part, lets work with this data coming back - lets get into the page we'd like to call the webservice, and wire it up. The first thing we'll need is a container to hold this data. I'm just loading up a div in this case, dont forget to set the ID so you can find it.
In this case, I'm going to have a button fire the event that calls the webservice, so we'll add that too:
<asp:Button ID="button1" runat="server" OnClientClick="doWork" Text="Do Work" />
<asp:ScriptManager ID="scriptmanager1" runat="server">
<asp:ServiceReference Path="~/WebService1.asmx" />
I'm going to post the complete example in here - and let you guys parse through it. Please feel free to post comments or questions:
ret = WebService1.GetWidgets(onComplete, onError, onTimeout);
var retData = new Array(5);
retData = result;
var strDiv = ""
var x = 0;
for (x=0; x<5; x++)
strDiv = strDiv + retData[x].Name + " " + retData[x].Price + "<br />";
document.getElementById("returnData").innerHTML = strDiv;
As always, Happy Coding and good luck!