通过


ServiceModel 注册工具(ServiceModelReg.exe)

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

Syntax

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

注解

可以在以下位置找到该工具:

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

注释

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

下表描述了可用于 ServiceModelReg.exe的选项。

选项 Description
-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'

应从错误消息中记下 System.ServiceModel 版本 2.0.0.0 程序集由早期客户技术预览版(CTP)安装。 发布的 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