ServiceModel 注册工具 (ServiceModelReg.exe)

利用此命令行工具可以管理 WCF 和 WF 组件在单一计算机上的注册。 在正常情况下,不应使用此工具,因为 WCF 和WF 组件在安装时配置。 但如果您遇到服务激活方面的问题,可以尝试使用此工具注册组件。

语法

ServiceModelReg.exe[(-ia|-ua|-r)|((-i|-u) -c:<command>)] [-v|-q] [-nologo] [-?]  

备注

可在以下位置中找到此工具:

%SystemRoot%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

注意

在 Windows Vista 上运行 ServiceModel 注册工具时,“Windows 功能”对话框可能不会反映出已打开“Microsoft .NET Framework 3.0”之下的“Windows Communication Foundation HTTP 激活”选项。 可通过以下方法访问“Windows 功能”对话框:依次单击“开始”、“运行”,然后键入“OptionalFeatures”。

下表介绍可用于 ServiceModelReg.exe 的选项。

选项 说明
-ia 安装所有 WCF 和 WF 组件。
-ua 卸载所有 WCF 和 WF 组件。
-r 修复所有 WCF 和 WF 组件。
-i 安装使用 –c 指定的 WCF 和 WF 组件。
-u 卸载使用 –c 指定的 WCF 和 WF 组件。
-c 安装或卸载组件:

- httpnamespace – HTTP 命名空间预留
- tcpportsharing – TCP 端口共享服务
- tcpactivation - TCP 激活服务(.NET 4 客户端配置文件中不支持)
- namedpipeactivation - 命名管道激活服务(.NET 4 客户端配置文件不支持)
- msmqactivation - MSMQ 激活服务(.NET 4 客户端配置文件不支持)
- etw – ETW 事件跟踪清单(Windows Vista 或更高版本)
-q 安静模式(仅显示错误日志记录)
-v 详细模式。
-nologo 取消版权和标题消息。
-? 显示帮助文本

修复 FileLoadException 错误

如果计算机上安装了以前版本的 WCF,当你运行 ServiceModelReg 工具注册新安装时,可能会收到 FileLoadFoundException 错误。 即使从以前的安装中手动移除了文件(但保留 machine.config 设置不变),也可能发生这种情况。

错误消息类似于以下内容。

Error: System.IO.FileLoadException: Could not load file or assembly 'System.ServiceModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)  
File name: 'System.ServiceModel, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'  

从错误消息中,您应注意到早期的客户技术预览 (CTP) 版本安装了 System.ServiceModel 2.0.0.0 版程序集。 而已发布 System.ServiceModel 程序集的当前版本为 3.0.0.0。 因此,当想要在安装过 WCF 早期 CTP 版本(但未完全卸载)的计算机上安装 WCF 的正式版本时,会遇到此问题。

ServiceModelReg.exe 无法清除以前的版本项,也无法注册新的版本项。 唯一的解决方法是手动编辑 machine.config。可在以下位置找到此文件。

%windir%\Microsoft.NET\Framework\v2.0.50727\config\machine.config

如果在 64 位计算机上运行 WCF,还应编辑位于此位置的相同文件。

%windir%\Microsoft.NET\Framework64\v2.0.50727\config\machine.config

在此文件中找到引用“System.ServiceModel, Version=2.0.0.0”的任何 XML 节点,并删除这些节点及任何子节点。 保存文件并重新运行 ServiceModelReg.exe 可解决此问题。

示例

下面的示例演示如何使用 ServiceModelReg.exe 工具的最常用选项。

ServiceModelReg.exe -ia  
  Installs all components  
ServiceModelReg.exe -i -c:httpnamespace -c:etw  
  Installs HTTP namespace reservation and ETW manifests  
ServiceModelReg.exe -u -c:etw  
  Uninstalls ETW manifests  
ServiceModelReg.exe -r  
  Repairs an extended install