ちょっと機会がありそうなので、試してみた。
Visual Studio 2010 のプロジェクト変換ウィザード だけでいけました!といっても、すごくシンプルな構成だったからだと思いますが。
構成
.NET 1.1 Windows アプリ から .NET 1.1 Web サービス(Web 参照で参照を追加している)に接続するだけ。
Form1.cs
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication1 { /// <summary> /// Form1 の概要の説明です。 /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Button button1; private System.Windows.Forms.DataGrid dataGrid1; /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows フォーム デザイナで生成されたコード // 自動生成部は省略 #endregion /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { DataSet param = new DataSet(); DataTable table = param.Tables.Add("TABLE"); table.Columns.AddRange(new DataColumn[] { new DataColumn("ID", typeof(int)), new DataColumn("NAME", typeof(string)), new DataColumn("DATE", typeof(DateTime))}); localhost.Service1 sv = new WindowsApplication1.localhost.Service1(); sv.Url = "http://<IPアドレス>/WebService2/Service1.asmx"; DataSet result = sv.CreateDataSet(param); this.dataGrid1.DataSource = result.Tables[0]; } } }Service1.asmx.csサービス側は、.NET 1.1 のままですが念のため。
using System; using System.ComponentModel; using System.Data; using System.Web.Services; namespace WebService2 { /// <summary> /// Service1 の概要の説明です。 /// </summary> public class Service1 : System.Web.Services.WebService { public Service1() { //CODEGEN: この呼び出しは、ASP.NET Web サービス デザイナで必要です。 InitializeComponent(); } #region コンポーネント デザイナで生成されたコード //Web サービス デザイナで必要です。 private IContainer components = null; /// <summary> /// デザイナ サポートに必要なメソッドです。このメソッドの内容を /// コード エディタで変更しないでください。 /// </summary> private void InitializeComponent() { } /// <summary> /// 使用されているリソースに後処理を実行します。 /// </summary> protected override void Dispose( bool disposing ) { if(disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } #endregion [WebMethod] public DataSet CreateDataSet(DataSet param) { param.Tables[0].Rows.Add(new object[] { 1, "AAA", DateTime.Now}); return param; } } }
移行した Windows Form のソースは、デザイナで開いても .Designer.cs は出来ませんでした。もちろん新規追加した Form は .Designer.cs が出来ます。
ハマった事は、Visual Studio 2003 で Web 開発って、VS の開発サーバーが無いんですね、忘れてました。。
今回は、単純な実装しか試していませんので鵜呑みにするのは危険です…。
2010/11/08 追記
書き忘れてました。.NET 4 にするには、プロジェクトのプロパティから対象の Framework を .NET 4 に変更して下さい。デフォルトでは、.NET 2.0 になっています。