【问题标题】:Visual Studio Express - Missing Project Subtype prevents opening of projectVisual Studio Express - 缺少项目子类型会阻止打开项目
【发布时间】:2014-10-30 23:22:16
【问题描述】:

我正在尝试按照此处的演练创建一个 WCF 项目...http://msdn.microsoft.com/en-us/library/bb386386.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3,但在最初的步骤中卡住了。

错误 - VSE Windows 桌面没有 WCF 服务库模板。

很好 - VSE Web Developer 可以,所以我在 VSE Web Developer 中设置了 WCF 项目

错误 - 无法在 VSE Windows 桌面中打开 WCF 项目

很好 - 发现您可以将模板从 VSE Web 开发人员文件夹复制到 VSE Windows 桌面,我会这样做

很好 - VSE Windows 桌面现在有 WCF 服务库模板,所以我尝试创建一个新的 WCF 项目。 VSE 似乎遵守了,设置了项目文件夹……但随后

Bad - ...抛出错误...

The project file '... WcfService1.csproj' cannot be opened.

There is a missing subtype.

Subtype:'{blah blah}' us unsupported by this installation.

我什至尝试将其关闭并再次打开。

接下来呢?

【问题讨论】:

  • WCF 服务库只不过是一个类库 (DLL)。项目模板可能会使启动和运行变得更容易,但与其运行您所做的所有工作,只需在 VSE Windows 桌面中创建一个类库项目即可。
  • @Tim - 我不能。 VSE Windows 桌面没有他的 WCF 服务库模板,所以我什至无法创建 WCF 项目。你还有别的意思吗?
  • 您可能希望看到这个相关的(重复的?)问题,了解您面临的一些障碍。 stackoverflow.com/questions/14698258/…

标签: c# wcf visual-studio-2013


【解决方案1】:

正如我在评论中提到的,WCF 服务库只不过是一个类库 - WCF 服务库项目模板只是有一些额外的东西可以更快地设置项目。你可以通过创建一个类库来做同样的事情。

转到菜单上的文件 -> 新建项目。在打开的窗口中,展开 Visual C#,然后选择 Windows 并从中心的列表中选择类库,为其命名,然后单击确定。

您必须为服务添加界面和配置设置,但您应该能够从您关注的文章中复制和粘贴。完成后,瞧,您就有了一个 WCF 服务库。

已编辑以获取更多详细信息

WCF 服务库模板为您提供的唯一内容是 WCF 服务库的样板 - 其中包括服务实现的 .cs 文件、服务实现的服务合同(接口)的 .cs 文件和app.config 文件,其中包含必要的 <system.serviceModel> 条目。

坚持您在原始帖子中链接到的文章,以下是不使用模板的方法。

第 1 步和第 2 步。按照我上面所说的 - 创建类库。 VS 将创建项目,您将看到一个名为 class1.cs 的文件。这将是您的服务等级。如果需要,将其重命名为 WCFServiceLibrary1.cs。

接下来添加一个接口并将其命名为IWCFServiceLibrary1。这将是您的服务合同。您需要更新WCFServiceLibrary1.cs 文件并在public class WCFServiceLibrary1 之后添加: IWCFServiceLibrary1,所以它看起来像这样:

public class WCFServiceLibrary1 : IWCFServiceLibrary1

在界面中,在界面上方添加[ServiceContract]属性,如下所示:

[ServiceContract]
public interface IWCFServiceLibrary1

您还需要在类和接口中添加对 System.ServiceModelusing System.ServiceModel 的引用。

第 3 步和第 4 步。将文章中的代码复制到正确的文件中。

第 5 步:您可以通过按 F5 并运行 WCFTestClient 来测试服务。

然后您应该能够阅读文章的其余部分。

这种方式需要更长的时间,但您也会更好地了解 WCF 服务库是什么。

【讨论】:

  • 试过了。在 VSE for Windows Desktop 中设置一个新的类库,并开始从 VSE for Web 复制项目(笨重,但试图找到问题)。但是,无法创建项目“Web Service .asmx”。事实上,VSE For Windows Desktop 在“Web”节点下没有“创建新项目”的项目。我怎么把那些东西放进去? PS 我查看了链接的文章,其中讨论了编辑 XML 文件,但它在哪里?
  • 好的。首先,停止尝试从 VSE for Web 复制内容。 Desktop 拥有创建此 WCF 服务库所需的一切,只是没有打包在一个简洁的模板中。 ASMX != WCF - ASMX 是遗留技术,不应用于新开发。给我几分钟,我会更新我的答案。
  • 感谢您的耐心等待。我完成了您的步骤,但卡在第 5 步。F5(在类库上)给出以下错误消息“无法直接启动具有类库输出类型的项目。为了调试该项目,请添加一个可执行文件项目到这个引用库项目的解决方案。将可执行项目设置为启动项目。我想我需要 MSDN 演练中的下一步来驱动类库。
  • 不行 - 演练中的下一步需要“添加服务引用”,但“发现”上没有显示任何内容,即使我将 WcfService1 项目添加到解决方案。在我看来,我有这些文件,但没有说“使用这些文件设置服务”的机制。此外,VSE for Windows Desktop 没有像 VSE for Web 那样的“Web”选项(不出所料),因此没有选择服务器(例如 IIS Express)或设置 localhost 的机制。我是否必须在 Windows 桌面的 VSE 中手动编写代码来创建模拟服务器/本地主机?
【解决方案2】:

期望管理 - 我应该完成演练中的所有步骤,但它们可能不是必需的(这在给出的答案中暗示)。所以,我尝试了一个简单的设置,在这里描述......

Is it possible to start exploring WCF using Visual Studio Express for Windows Desktop 2013?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多