【问题标题】:Unable to add service in WcfTestClient when copy to a different machine复制到另一台机器时无法在 WcfTestClient 中添加服务
【发布时间】:2013-02-25 21:05:30
【问题描述】:

我想在不安装 VS2012 的情况下在另一台机器上运行 WcfTestClient(VS2012 附带的)。这可能吗?在我安装了 .NET 4.5 的机器上,但是当我尝试添加 Web 服务时,它给了我以下堆栈跟踪:

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Tools.Common.SdkPathUtility.GetRegistryValue(String registryPath, String registryValueName)
   at Microsoft.Tools.Common.SdkPathUtility.GetSdkPath(Version targetFrameworkVersion)
   at Microsoft.Tools.TestClient.ToolingEnvironment.get_MetadataTool()
   at Microsoft.Tools.TestClient.ServiceAnalyzer.GenerateProxyAndConfig(String projectPath, String address, String configPath, String proxyPath, Int32 startProgressPosition, Int32 endProgressPostition, BackgroundWorker addServiceWorker, String& errorMessage)
   at Microsoft.Tools.TestClient.ServiceAnalyzer.AnalyzeService(String address, BackgroundWorker addServiceWorker, Single startProgress, Single progressRange, String& errorMessage)
   at Microsoft.Tools.TestClient.Workspace.AddServiceProject(String endpoint, BackgroundWorker addServiceWorker, Single startProgress, Single progressRange, String& error)
   at Microsoft.Tools.TestClient.AddServiceExecutor.Execute(AddServiceInputs inputs, Workspace workspace, BackgroundWorker addServiceWorker)
   at Microsoft.Tools.TestClient.UI.MainForm.addServiceWorker_DoWork(Object sender, DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

在 WcfTestClient 文件夹中,我只有 2 个文件,是否需要包含其他文件? WcfTestClient.exe WcfTestClient.exe.config

两者都是直接从 VS2012 IDE 文件夹中复制而来的。

【问题讨论】:

  • 对我来说也一样,没有线索。
  • 您是否尝试过使用Process Explorer 来查看测试客户端正在加载哪些dll?这可能会为您提供有关您可能缺少什么的线索。
  • 嘿,实际上是在查看堆栈跟踪,它正在尝试读取 SDK 特定的注册表项。我认为没有 WCF SDK,它带有 VS,所以你可能不走运。

标签: .net wcf visual-studio-2012 exception-handling wcftestclient


【解决方案1】:

WCFTestClient 必须在安装了 SDK 的计算机上运行。它不仅在注册表中查找 SDK 的位置,而且还运行 SDK 中的 svcutil 以生成代理类以在运行时连接。

【讨论】:

  • 在使用 VS2012 Pro(更新 4)在 Windows 7 上开发 .Net 4.0 WCF 服务时,我发现我需要安装 Windows 8.0 SDK,而不是可能假设的 Windows 7 SDK。跨度>
  • @MattDonald 你必须把它放在单独的答案中,所以我可以投票给它。
  • @Avram 创建单独的答案!
【解决方案2】:

在使用 VS2012 Pro(更新 4)在 Windows 7 上开发 .Net 4.0 WCF 服务时,我发现我需要安装 Windows 8.0 SDK,而不是人们可能假设的 Windows 7 SDK。 (添加此答案以替换我之前的评论)。

【讨论】:

    【解决方案3】:

    响应有点晚,但不需要在目标计算机上安装 SDK。

    您只需要复制一些文件并确保存在一个注册表项。

    从本地安装的 VS 2015 (v14.0):

    C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\WcfTestClient.exe
    C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.VisualStudio.VirtualTreeGrid\v4.0_14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.VirtualTreeGrid.dll
    

    从本地安装的 Windows SDK (v10):

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\SvcUtil.exe
    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\SvcConfigEditor*.*
    

    注册表项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.6\WinSDK-NetFx40Tools-x86  (just ensure all keys exists, no content needed)
    

    完整解释在这里:https://social.msdn.microsoft.com/Forums/vstudio/en-US/c3c7221c-c06f-4364-887a-fb20f22877be/wcf-test-client-problem?prof=required(最后回复,作者:Jakub Bereżański)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2020-06-18
      • 2011-02-06
      • 2018-08-16
      相关资源
      最近更新 更多