我迄今阅读的所有文档都建议您可以从可移植类库中创建Web服务库,它们都声明:
可用于“WebGet”属性和其他WCF Rest功能。
然而,当我尝试引用命名空间时,它说它不可用,并且在代码中浏览不会显示命名空间。
我通常认为这意味着它在可移植类库中不可用,但命名空间在对象浏览器中可见。
我甚至尝试过限制我所针对的框架:
但没有喜悦。即使只使用SL5和.NET 4.5仍然没有公开命名空间
有什么想法吗?
答案 0 :(得分:1)
答案很简单就是没有
您可以在PCL项目中使用所有基本的[DataContract] / [ServiceOperation] / [DataMember]属性,但不能将Rest Implementation属性放在任何内容上。
为PCL中的属性尽可能多地提供然后在具体实现中应用Rest属性的简单答案(确实需要存在于PCL中)
另外值得注意的是,当您使用PCL时,很多可序列化标签都会丢失,因此请将[DataContract] [DataMember]属性添加到您的所有模型和属性中,否则您将遇到我遇到的问题。 / p>
答案 1 :(得分:0)
我认为Visual Studio 2010中存在某种缺陷。即使System.ServiceModel
和System.ServiceModel.Web
程序集似乎是自动引用的,默认情况下它们不是,并且相应的名称空间不可用:
要解决此问题,请打开添加引用对话框。所有程序集似乎都会被引用,但它们都不包含在项目 References 列表中:
要真正将所需的装配添加到项目中,请从列表中选择装配。现在,首先单击删除,然后立即单击添加(或者,在列表中双击该程序集两次)。执行此操作后,“已删除/添加”程序集现在将显式显示在项目的引用列表中:
现在可以在键入时使用相应的命名空间和类:
可以成功构建项目。
这似乎适用于最广泛的平台包含,即.NET Framework 4 +,Silverlight 4 +,WP7 +和Windows应用商店应用。这已经在VS 2010上使用最新的PCL插件进行了测试。
在Visual Studio 2012上, .NET可移植子集被列为整体,并且无法(取消)引用该子集的各个程序集。但是,在VS 2012上,当您创建新的可移植类库时,似乎会自动覆盖对System.ServiceModel
等程序集的访问。
以上所有内容均已在具有非Express Visual Studio版本的Windows 7系统上进行了测试。