【问题标题】:Why does "Inherits Microsoft.Web.Services2.WebServicesClientProtocol" kill build为什么“继承 Microsoft.Web.Services2.WebServicesClientProtocol”会杀死构建
【发布时间】:2014-11-26 11:59:23
【问题描述】:

我正在尝试在 Visual Basic 中(在 Windows 7 上的 Visual Studio 2012 Professional 中)编写一个 Outlook 加载项,它将与我们在工作中使用的 Web 服务进行交互。不幸的是,这个特定的 Web 服务并没有真正与时俱进,因此需要 Web 参考来实现 Microsoft.Web.Services2.WebServicesClientProtocol 来做某些事情。当我将生成的 Reference.vb 更改为继承此类而不是默认的并 Rebuild All 时,构建失败并显示以下消息:

------ 重建所有开始:项目:OutlookAddIn1,配置:调试任何 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):错误 MSB4018:“FindRibbons”任务意外失败。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: System.IO.FileNotFoundException: 无法加载文件或程序集 '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):错误 MSB4018:文件名:'OutlookAddIn1,版本 = 1.0.0.0 , 文化=中性, PublicKeyToken=null'
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名, 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):错误 MSB4018:在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName 文件名, 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):错误 MSB4018:在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef , 证据 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): 错误 MSB4018: 在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString , 证据 assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean for Introspection)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: 在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString , 证据组装安全, StackCrawlMark& stackMark, Boolean for Introspection)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: 在 System.Reflection.Assembly.Load(String assemblyString )
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:在 System.UnitySerializationHolder.GetRealObject(StreamingContext 上下文)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:在 Microsoft.Build.Framework.ITask.Execute( )
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:在 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):错误 MSB4018:在 Microsoft.Build.BackEnd.TaskBuilder.d__20。移动下一个()
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: === 预绑定状态信息 ===
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: LOG: DisplayName = OutlookAddIn1, Version=1.0.0.0 , 文化=中性, PublicKeyToken=null
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:(完全指定)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9): 错误 MSB4018: LOG: Appbase = file:///C: /程序文件 (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): 错误 MSB4018: LOG: Initial PrivatePath = NULL
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:调用程序集:(未知)。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:===
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:LOG:此绑定在默认加载上下文中启动。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:LOG:使用应用程序配置文件: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):错误 MSB4018:LOG:使用主机配置文件:
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 (私有、自定义、部分或基于位置的程序集绑定)。
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 hr = 0x80070002 失败。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(176,9):错误 MSB4018:
==========全部重建:0成功,1失败,0跳过==========

我发现崩溃并没有发生,因为专门更改了 Reference.vb。如果我创建一个新的 Outlook 2013 加载项项目、创建一个新类并让它继承 Microsoft.Web.Services2.WebServicesClientProtocol,我可以始终如一地重现这一点:

公共课 Class1
    继承 Microsoft.Web.Services2.WebServicesClientProtocol
结束类

完成更改后,我将 Microsoft.Web.Services2.dll 添加到项目引用中,并在一些提示后添加 System.Web.Services.dll。我全部重建并及时得到上述错误。

我发现如果我改用 Microsoft.Web.Services3.WebServicesClientProtocol,它可以正常工作。

这是我的第一个 Visual Basic 项目(以及任何使用 Microsoft 工具的项目),所以我可能遗漏了一些非常明显的东西。选择使用这个 Web 服务(以及扩展的 WSE2)不是我的选择。我正在尝试与其他人已经购买的东西进行交互。

我重新安装了 Visual Studio,但没有成功。

关于为什么会发生这种情况或如何解决这个问题的任何提示?提前致谢!

【问题讨论】:

    标签: vb.net visual-studio-2012 outlook-addin wse2.0


    【解决方案1】:

    事实证明,WSE 2 实在是太旧了。它只支持最高版本 2 的 .NET 框架,我认为这就是它失败的原因。我正在使用 4.5(只能低至 4),因为我正在编写 Outlook 2013 加载项。由于根本没有任何内置功能来处理 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
    

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2014-01-22
      相关资源
      最近更新 更多