|
分類:[.NET 全般]
はじめまして。
MSBuildを利用してビルドの自動化を考えています。
以下のような構造で、MSBuildでリビルドするとコンパイルエラーになるのですが、
MSBuildで、参照先の参照設定を認識するにはどのようなプロパティをしていすればよいのでしょうか?
(ソリューション内容)
プロジェクトAでWeb参照を管理
プロジェクトBでプロジェクトAを参照設定に追加
MSBuildでプロジェクトBをビルドすると"System.Web.Services"の参照を追加ように
なり、コンパイルエラーとなります。
Visual Studio(2008)上でコンパイルすると問題なくコンパイルできます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 実行コマンド
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild /p:Configuration=Release
/t:rebuild .\WindowsApplication1.vbproj
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ サンプルソース(10 行でズバリ !! Web サービス クライアント アプリケーションの開発をVBで試したないようです)
Webサービス(Service1.asmx.vb)
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
' この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function ServerTime() As String
' サーバーの現在時刻を返します
Return DateTime.Now.ToLongTimeString()
End Function
<WebMethod()> _
Public Function LiveDate(ByVal BirthDay As DateTime) As Integer
' 引数で渡された日付から今日までの日数を計算します
Return DateTime.Now.Subtract(BirthDay).Days
End Function
End Class
Proxyプロジェクト(WindowsApplication3:クラスライブラリ)
Webサービスの参照設定を追加
実行プロジェクト(WindowsApplication1)
Imports WindowsApplication3.Service1
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim service As Service1 = New Service1
MessageBox.Show(service.LiveDate(Me.DateTimePicker1.Value))
End Sub
End Class
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 実行結果
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3082]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
2009/08/06 13:02:40 にビルドを開始しました。
ノード 0 上のプロジェクト "C:\temp\WindowsApplication1\WindowsApplication1\WindowsApplication1.vbproj" (rebuild ターゲッ
ト)。
ディレクトリ "obj\Release\" を作成しています。
EntityClean:
Successfully cleaned the output for 0 EDMX files.
EntityDeploy:
Processing 0 EDMX files.
Finished processing 0 EDMX files.
PrepareForBuild:
ディレクトリ "bin\Release\" を作成しています。
CoreResGen:
リソース ファイル "Form1.resx" を "obj\Release\WindowsApplication1.Form1.resources" に処理しています。
リソース ファイル "My Project\Resources.resx" を "obj\Release\WindowsApplication1.Resources.resources" に処理していま
す。
C:\temp\WindowsApplication1\WindowsApplication1\Form1.vb(6): error BC30007: 基本クラス 'System.Web.Services.Protocols.So
apHt
tpClientProtocol' を含むアセンブリ 'System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a
3a' への参
照が必要です。参照をプロジェクトに追加してください。
プロジェクト "C:\temp\WindowsApplication1\WindowsApplication1\WindowsApplication1.vbproj" (rebuild ターゲット) のビルド
が終了しました -- 失敗。
ビルドに失敗しました。
"C:\temp\WindowsApplication1\WindowsApplication1\WindowsApplication1.vbproj" (rebuild ターゲット) (1) ->
(CoreCompile ターゲット) ->
C:\temp\WindowsApplication1\WindowsApplication1\Form1.vb(6): error BC30007: 基本クラス 'System.Web.Services.Protocols.
Soap
HttpClientProtocol' を含むアセンブリ 'System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d5
0a3a' へ
の参照が必要です。参照をプロジェクトに追加してください。
0 警告
1 エラー
経過時間 00:00:01.93
|