Ответ 1
WCFTestClient должен запускаться на компьютере с установленным SDK. Он не только ищет в реестре, чтобы найти местоположение SDK, но также запускает svcutil из SDK для создания прокси-классов для подключения во время выполнения.
Я хочу запустить WcfTestClient (тот, который входит в состав VS2012) на другой машине без установки VS2012. Это возможно? На компьютере я установил .NET 4.5, но когда я пытаюсь добавить веб-службы, он дает мне следующую трассировку стека:
************** 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
Оба скопированы непосредственно из папки ID2 VS2012.
WCFTestClient должен запускаться на компьютере с установленным SDK. Он не только ищет в реестре, чтобы найти местоположение SDK, но также запускает svcutil из SDK для создания прокси-классов для подключения во время выполнения.
При разработке .NET WCF Service в Windows 7 с помощью VS2012 Pro (обновление 4) я обнаружил, что мне нужно установить SDK для Windows 8.0, а не Windows 7 SDK, как это можно было бы предположить. (Добавлен этот ответ, чтобы заменить мой предыдущий комментарий).
Немного поздний ответ, но установка 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 (последний ответ, автор: Якуб Бережанский)