diff --git a/data/templates/file/CSharp/CSharp.WcfRestService.xft b/data/templates/file/CSharp/CSharp.WcfRestService.xft
new file mode 100644
index 0000000000..3db8d9171a
--- /dev/null
+++ b/data/templates/file/CSharp/CSharp.WcfRestService.xft
@@ -0,0 +1,55 @@
+
+
+
+
+
+ WCF REST Service
+
+
+
+
+]]>
+
+
+
+ /// Description of ${ClassName}.
+ ///
+ public class ${ClassName} : I${ClassName}
+ {
+ public string MyOperation(string name)
+ {
+ // implement the operation
+ return string.Format("Operation name: {0}", name);
+ }
+ }
+}
+]]>
+
+
+
\ No newline at end of file
diff --git a/data/templates/file/VB/VB.WcfRestService.xft b/data/templates/file/VB/VB.WcfRestService.xft
new file mode 100644
index 0000000000..b06fffa6d0
--- /dev/null
+++ b/data/templates/file/VB/VB.WcfRestService.xft
@@ -0,0 +1,50 @@
+
+
+
+
+
+ WCF REST Service
+
+
+
+
+]]>
+
+
+ _
+Public Interface I${ClassName}
+ _
+ _
+ Function MyOperation(name As String) As String
+End Interface
+
+'''
+''' Description of ${ClassName}.
+'''
+Public Class ${ClassName}
+ Implements I${ClassName}
+ Function MyOperation(name As String) As String Implements I${ClassName}.MyOperation
+ ' implement the operation
+ Return String.Format("Operation name: {0}", name)
+ End Sub
+End Class
+]]>
+
+
+
\ No newline at end of file
diff --git a/data/templates/project/CSharp/CSharp.WcfRestServiceProject.xpt b/data/templates/project/CSharp/CSharp.WcfRestServiceProject.xpt
new file mode 100644
index 0000000000..5755f10a79
--- /dev/null
+++ b/data/templates/project/CSharp/CSharp.WcfRestServiceProject.xpt
@@ -0,0 +1,104 @@
+
+
+
+
+
+ WCF REST Service
+ C#
+ WCF
+ C#.Project.Form
+ WCF REST Service
+ v3.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Library
+ {3D9AD99F-2412-4246-B90B-4EAA41C64699};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Properties
+
+
+
+ bin\
+
+
+
+ bin\
+
+
+
+
+
+
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
diff --git a/data/templates/project/CSharp/CSharp.WcfServiceProject.xpt b/data/templates/project/CSharp/CSharp.WcfServiceProject.xpt
index fe086c77db..76e7ddd7e3 100644
--- a/data/templates/project/CSharp/CSharp.WcfServiceProject.xpt
+++ b/data/templates/project/CSharp/CSharp.WcfServiceProject.xpt
@@ -17,7 +17,7 @@
-
+
@@ -42,12 +42,12 @@
-
+
+<%@ServiceHost language="C#" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
-
+
-
-
-
+
+ contract="${StandardNamespace}.IService" />
diff --git a/data/templates/project/VB/VB.WcfRestServiceProject.xpt b/data/templates/project/VB/VB.WcfRestServiceProject.xpt
new file mode 100644
index 0000000000..8242a82b2b
--- /dev/null
+++ b/data/templates/project/VB/VB.WcfRestServiceProject.xpt
@@ -0,0 +1,99 @@
+
+
+
+
+
+ WCF REST Service
+ VB
+ WCF
+ VBNet.Project.Form
+ WCF REST Service
+ v3.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Library
+ {3D9AD99F-2412-4246-B90B-4EAA41C64699};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Properties
+
+
+
+ bin\
+
+
+
+ bin\
+
+
+
+
+
+
+]]>
+
+
+ _
+Public Interface IService
+ _
+ _
+ Function MyOperation(name As String) As String
+End Interface
+
+Public Class Service
+ Implements IService
+ Function MyOperation(name As String) As String Implements IService.MyOperation
+ ' implement the operation
+ Return String.Format("Operation name: {0}", name)
+ End Function
+End Class
+]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
diff --git a/data/templates/project/VB/VB.WcfServiceProject.xpt b/data/templates/project/VB/VB.WcfServiceProject.xpt
index 07cfbf24e4..edddb53089 100644
--- a/data/templates/project/VB/VB.WcfServiceProject.xpt
+++ b/data/templates/project/VB/VB.WcfServiceProject.xpt
@@ -17,7 +17,7 @@
-
+
@@ -42,42 +42,27 @@
-
+
+<%@ServiceHost language="VB" Debug="true" Service="${StandardNamespace}.Service"%>
]]>
-
+
_
-Public Interface ICalculator
+Public Interface IService
_
- Function Add(n1 As Double, n2 As Double) As Double
- _
- Function Subtract(n1 As Double, n2 As Double) As Double
- _
- Function Multiply(n1 As Double, n2 As Double) As Double
- _
- Function Divide(n1 As Double, n2 As Double) As Double
+ Sub MyOperation()
End Interface
-Public Class ServiceCalculator
- Implements ICalculator
- Public Function Add(n1 As Double, n2 As Double) As Double Implements ICalculator.Add
- Return n1 + n2
- End Function
- Public Function Subtract(n1 As Double, n2 As Double) As Double Implements ICalculator.Subtract
- Return n1 - n2
- End Function
- Public Function Multiply(n1 As Double, n2 As Double) As Double Implements ICalculator.Multiply
- Return n1 * n2
- End Function
- Public Function Divide(n1 As Double, n2 As Double) As Double Implements ICalculator.Divide
- Return n1 / n2
- End Function
+Public Class Service
+ Implements IService
+ Public Sub MyOperation() Implements IService.MyOperation
+ ' implement the operation
+ End Sub
End Class
]]>
@@ -86,12 +71,10 @@ End Class
-
-
-
+
+ contract="${StandardNamespace}.IService" />
diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs
index 10a66fd7da..08b723b286 100644
--- a/src/Setup/Files.wxs
+++ b/src/Setup/Files.wxs
@@ -730,6 +730,9 @@
+
+
+
@@ -804,6 +807,9 @@
+
+
+
@@ -848,6 +854,9 @@
+
+
+
@@ -889,6 +898,9 @@
+
+
+
diff --git a/src/Setup/Setup.wxs b/src/Setup/Setup.wxs
index a9ea949001..b2a6c3f9a3 100644
--- a/src/Setup/Setup.wxs
+++ b/src/Setup/Setup.wxs
@@ -318,6 +318,11 @@
+
+
+
+
+