【问题标题】:The type 'StringPro.IMyString' is defined in an assembly that is not referenced'StringPro.IMyString' 类型在未引用的程序集中定义
【发布时间】:2023-03-28 16:54:01
【问题描述】:

我在尝试运行客户端时收到此错误。

“StringPro.IMyString”类型在未引用的程序集中定义。

此错误来自文件 Program.cs 中的 StringProClient,并在以下第一行代码中用蓝色下划线:

StringProProxy.StringProProxy proxy = new StringProProxy.StringProProxy();

解决方案里面有4个项目:

StringPro - 包含服务接口(@98​​7654322@)和实现类(MyString.cs)的类库

StringProHost - 包含 Program.cs 的控制台应用程序,其中定义了 UriServiceHostEndpointServiceMetadataBehaviourHttpGetEnabledhost.Description.Behaviours,调用 host.Open()并在控制台中显示有关服务何时启动的信息

StringProProxy - 我相信这是一个类库项目,因为它只有 StringProProxy.cs 定义了服务的代理

StringProClient - 控制台应用程序,它在内部实例化服务的代理,调用服务的函数并显示结果。

编辑:服务主机启动正常。由于上述错误,客户端无法构建和运行。

【问题讨论】:

    标签: c# .net wcf exception-handling


    【解决方案1】:

    如果项目正在使用在其他程序集中声明的类型,则必须引用此程序集 - 这基本上就是您的错误告诉您的内容。

    在你的情况下,我猜StringProClient 是在引用StringProProxy,但它也使用在StringPro 项目中声明的类型(准确地说是:IMyString 接口/类),而没有引用它。您应该确保StringProClient 引用了StringProProxyStringPro

    【讨论】:

    • 如果有效,请不要使用。现在我尝试运行它们并得到:Could not find default endpoint element that references contract 'StringPro.IMyString' in the ServiceModel client configuration section.
    • @Bob 好吧,这是完全不同的错误。以前的一个是通用的 c# 编译器,现在你有一个 WCF。您可以检查其他 SO.com 问题。比如这个:stackoverflow.com/questions/352654/…
    • 如何从一个 Visual Studio 实例同时运行主机和客户端。因为如果我运行主机,我将无法运行客户端,因为它禁用了项目查看器。如果我尝试运行 StringPro,它不会运行,因为它是一个类库。
    • @Bob stackoverflow.com/questions/3850019/… 。您也可以在运行第一个项目后打开项目查看器,然后单击它并选择启动实例。这些问题可以用谷歌搜索,并且与您的主要问题无关,在 cmets 中坚持一个问题/主题是一种好习惯。
    • 我的错。我找到了解决方案,但由于某种原因它不允许我编辑以前的评论。感谢您的帮助。
    【解决方案2】:

    此类问题主要出现在命名空间等问题上。请再次检查您的引用以及命名空间。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2014-08-15
      • 2016-05-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多