簡體   English   中英

為什么“繼承Microsoft.Web.Services2.WebServicesClientProtocol”會終止構建

[英]Why does “Inherits Microsoft.Web.Services2.WebServicesClientProtocol” kill build

我正在嘗試在Visual Basic(在Windows 7上為Visual Studio 2012 Professional)中編寫一個Outlook加載項,該加載項將與我們在工作中使用的Web服務交互。 不幸的是,這種特定的Web服務並沒有真正與時俱進,因此,需要Web參考來實現Microsoft.Web.Services2.WebServicesClientProtocol來完成某些事情。 當我將生成的Reference.vb更改為繼承此類而不是默認類和Rebuild All時,構建失敗並顯示以下消息:

------ Rebuild All started: Project: OutlookAddIn1, Configuration: Debug Any CPU ------
  OutlookAddIn1 -> \\nas01\my-home$\chq-andrewt\Visual Studio 2012\Projects\OutlookAddIn1\OutlookAddIn1\bin\Debug\OutlookAddIn1.dll
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: The "FindRibbons" task failed unexpectedly.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'OutlookAddIn1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: File name: 'OutlookAddIn1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.Reflection.Assembly.Load(String assemblyString)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at System.UnitySerializationHolder.GetRealObject(StreamingContext context)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at Microsoft.Build.Framework.ITask.Execute()
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.d__20.MoveNext()
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: === Pre-bind state information ===
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: DisplayName = OutlookAddIn1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018:  (Fully-specified)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Initial PrivatePath = NULL
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: Calling assembly : (Unknown).
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: ===
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: This bind starts in default load context.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Using application configuration file: C:\Users\chq-andrewt\AppData\Local\Microsoft\VisualStudio\11.0\devenv.exe.config
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Using host configuration file: 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: LOG: The same bind was seen before, and was failed with hr = 0x80070002.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): error MSB4018: 
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

我發現由於特定地對Reference.vb的更改而導致崩潰不會發生。 如果我創建一個新的Outlook 2013加載項項目,創建一個新類並使其繼承Microsoft.Web.Services2.WebServicesClientProtocol,則可以一致地重現此內容:

Public Class Class1
    Inherits Microsoft.Web.Services2.WebServicesClientProtocol
End Class

進行更改后,將Microsoft.Web.Services2.dll添加到項目“引用”中,並在出現提示后將System.Web.Services.dll添加到項目中。 我全部重建,並迅速得到上述錯誤。

我發現如果使用Microsoft.Web。 而是使用Services3 .WebServicesClientProtocol,它可以正常工作。

這是我的第一個Visual Basic項目(以及與此有關的任何使用Microsoft工具的項​​目),因此我可能會遺漏一些顯而易見的東西。 使用該Web服務(以及擴展名WSE2)的選擇不是我的選擇; 我正在嘗試與其他人已經購買的東西進行交互。

我已經重新安裝了Visual Studio,但沒有運氣。

關於這種情況為什么發生或如何進行更多故障排除的任何提示? 提前致謝!

事實證明,WSE 2太舊了。 它僅支持最高2版的.NET框架,這就是我為什么要使用它的原因。 自從編寫Outlook 2013加載項以來,我正在使用4.5(只能降低到4)。 由於根本沒有內置功能可用於進行SOAP附件,因此我最終手動發布了原始SOAP消息,因為它是免費的解決方案,而且非常簡單。

沒有評論它有多強大和永不過時...

Public Shared Sub createAttachment(uploadPath As String, fileName As String, ticketHandle As String, description As String)
    Dim fInfo As New FileInfo(uploadPath)
    Dim numBytes As Long = fInfo.Length
    Dim fStream As New FileStream(uploadPath, FileMode.Open, FileAccess.Read)
    Dim br As New BinaryReader(fStream)
    Dim data As Byte() = br.ReadBytes(CInt(numBytes))
    br.Close()
    fStream.Close()

    Dim boundary As String = "Part_3_4083017.1413597427118"

    ' Set the 'Method' property of the 'Webrequest' to 'POST'.
    Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("http://soapserver:8080/axis/services/USD_R11_WebService"), HttpWebRequest)
    myHttpWebRequest.Method = "POST"
    myHttpWebRequest.UserAgent = "Jakarta Commons-HttpClient/3.1"
    myHttpWebRequest.Host = "soapserver:8080"
    myHttpWebRequest.ContentType = "multipart/related; type=""text/xml""; start=""<rootpart@soapui.org>""; boundary=""----=_" & boundary & """"
    Dim myWebHeaderCollection As WebHeaderCollection = myHttpWebRequest.Headers
    myWebHeaderCollection.Add("MIME-Version: 1.0")
    myWebHeaderCollection.Add("Accept-Encoding: gzip,deflate")
    myWebHeaderCollection.Add("SOAPAction:""""")
    'myWebHeaderCollection.Add("Expect:100-continue")

    Dim inputData As String = Console.ReadLine()
    Dim postData As New StringBuilder()
    postData.Append("------=_" & boundary & vbCrLf)
    postData.Append("Content-Type: text/xml; charset=UTF-8" & vbCrLf)
    postData.Append("Content-Transfer-Encoding: 8bit" & vbCrLf)
    postData.Append("Content-ID: <rootpart@soapui.org>" & vbCrLf)
    postData.Append("" & vbCrLf)
    postData.Append("<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ser=""http://www.vendorurl.com/TheirProduct"">")
    postData.Append("<soapenv:Header/>")
    postData.Append("<soapenv:Body>")
    postData.Append("<ser:createAttachment>")
    postData.Append("<sid>" & sid & "</sid>")
    postData.Append("<repositoryHandle>" & getRepositoryHandle() & "</repositoryHandle>")
    postData.Append("<objectHandle>" & ticketHandle & "</objectHandle>")
    postData.Append("<description>" & description & "</description>")
    postData.Append("<fileName>" & uploadPath & "</fileName>")
    postData.Append("</ser:createAttachment>")
    postData.Append("</soapenv:Body>")
    postData.Append("</soapenv:Envelope>" & vbCrLf)
    postData.Append("------=_" & boundary & vbCrLf)
    postData.Append("Content-Type: image/x-png; name=" & fileName & vbCrLf)
    postData.Append("Content-Transfer-Encoding: binary" & vbCrLf)
    postData.Append("Content-ID: <" & fileName & ">" & vbCrLf)
    postData.Append("Content-Disposition: attachment; name=""" & fileName & """; filename=""" & fileName & """" & vbCrLf)
    postData.Append("" & vbCrLf)
    Dim encoding As New UTF8Encoding()
    Dim header As Byte() = encoding.GetBytes(postData.ToString)
    Dim tail As Byte() = encoding.GetBytes(vbCrLf & "------=_" & boundary & "--")
    myHttpWebRequest.ContentLength = header.Length + data.Length + tail.Length
    Dim newStream As Stream = myHttpWebRequest.GetRequestStream()
    newStream.Write(header, 0, header.Length)
    newStream.Write(data, 0, data.Length)
    newStream.Write(tail, 0, tail.Length)
    newStream.Close()
    Try
        Dim response = myHttpWebRequest.GetResponse()
        Dim s As Stream = response.GetResponseStream()
        Dim sr As New StreamReader(s)
        Dim Content As String = sr.ReadToEnd()
        'Could parse Content to get the handler for our new attachment
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM