微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以仅为特定项目自动启动 WCF?

如何解决是否可以仅为特定项目自动启动 WCF?

我有一个 WCF 项目,其他几个项目都依赖该项目,但其他项目,例如单元测试项目和其他不需要该服务的支持实用程序。它在 .csproj 文件中包含以下 XML:

<ProjectExtensions>
  <VisualStudio>
    <FlavorProperties GUID="{3D9AD99F-2412-4246-B90B-4EAA41C64699}">
      <WcfProjectProperties>
        <AutoStart>True</AutoStart>
      </WcfProjectProperties>
    </FlavorProperties>
  </VisualStudio>
</ProjectExtensions>

有没有办法让“带项目的自动启动服务”功能仅适用于解决方案中的特定项目?还是全有或全无?有什么我可以添加到其他项目中来告诉他们他们依赖此服务使其在调试会话中自动启动的吗?或者在服务的 .csproj 中添加一些条件,取决于哪个项目是当前启动项目?

我尝试在不同的地方使用 Condition="'$(Configuration)' == 'Debug'" 进行试验,但我无法根据该 Configuration 变量使其行为有所不同。

解决方法

要使客户端应用程序可调试,请创建一个新的小项目并将服务和客户端应用程序设置为依赖项。它应该包含的唯一文件是 Program.cs,它的唯一功能应该是这样的:

[STAThread]
static void Main(string[] args)
{
    new System.ServiceModel.ServiceHost(typeof(MyServiceClass)).Open();
    MyClientApplication.Program.Main(args);
}

然后将两者的 app.config 合并到这个小应用程序的单个 app.config 中。但是现在该服务与客户端托管在同一进程中,并且它们可以互换调试。

这允许从服务中删除自动启动功能,但仍可与服务一起运行客户端应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。