我正在尝试将IntelliSense和SandCastle兼容文档添加到通过svcutil生成的WCF代理类中。有没有办法在不直接编辑生成的代码的情况下执行此操作(因为如果重新生成它会丢失)?
答案 0 :(得分:3)
在WCFExtras项目中,您可以找到您正在寻找的功能;获取XML代码文档并将其嵌入到WSDL +中的WSDL导出器和导入器将其拉出并在生成的客户端代理上再次将其作为XML doc添加。
WCFExtras可以在这里找到:http://wcfextras.codeplex.com/(或作为Nuget包)。
- larsw
答案 1 :(得分:1)
有限的解决方案可能是仅创建文档部分类来镜像SvcUtil生成的类。由于SvcUtil类是作为分部类创建的,因此您可以利用它来记录类,但这可能不适用于方法或属性。 IntelliSense将显示注释。我相信SandCastle也会合并评论,但没有尝试过。如果你想走这条路,让这些类与服务变化保持同步可能会很痛苦。
这是文档类的样子:
/// <summary>
/// This is a comment
/// </summary>
public partial class YourSvcUtilGenerateClientClass { }
答案 2 :(得分:1)
我认为您可以覆盖使用模板生成这些类的方式。 这是一篇文章的链接。他们专注于silverlight,但我认为代码背景仍然适用。
答案 3 :(得分:0)
就个人而言,我从未使用生成的WCF代理类。滚动自己的代理类太容易了。这就是所需要的(当您在代理类上添加ServiceContract接口时,Visual Studio可以为您添加这些方法):
using System.ServiceModel;
namespace My.Namespace
{
public class MyServiceContractProxy : ClientBase<IMyServiceContract>, IMyServiceContract
{
public MyServiceContractProxy() { }
public MyServiceContractProxy(string endpointName) : base(endpointName) { }
#region IMyServiceContract Members
public int AddValues(int val1, int val2)
{
return Channel.AddValues(val1, val2);
}
#endregion
}
}
如果您的ServiceContract发生更改,它将引发编译错误,因为您的代理将不再与该接口匹配,但通常不会超过10秒编辑您的代理类。
答案 4 :(得分:0)
由于XML评论路线无法满足您的需求,因此Document! X 2011产品将成为您的选择。它不是免费的,但它会做你需要的。