首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual 2022中的WCF服务引用不包括项目引用

Visual 2022中的WCF服务引用不包括项目引用
EN

Stack Overflow用户
提问于 2022-11-23 00:40:30
回答 1查看 50关注 0票数 1

在VisualStudio2019中,我能够生成一个WCF服务引用,该引用使用用于WCF方法参数的共享类。只要我在生成服务引用之前为包含共享类的项目添加了项目引用,它就会使用共享类而不是在reference.cs中生成类。

在Visual 2022中,我无法实现相同的目标。无论我尝试什么,新类都将在引用文件中生成,并且不会使用项目引用中的现有类。

“引用程序集中的重用类型”中服务引用的引用程序集列表不包括项目引用。VS 2019年中的相同列表显示此列表中的本地项目引用。

通过右键单击项目、添加/项目引用、选中共享库的复选框,添加了对同一解决方案中包含的项目的引用。然后右击project、Add/Connected Service、WCF Web Service,将WCF服务器的net.tcp:://localhost添加到URI中,更改服务名称,然后按Next (注意我共享的项目不在引用程序集列表中,如VS 2019年),按下一步,按Finish。预期我在reference.cs上生成的代码将像VS 2019年那样在WCF方法中使用共享库类。但是,它为类生成代码。

下面是VS 2019年中生成的接口的一个示例,其中在生成的方法中使用共享库项目中的类:

代码语言:javascript
运行
复制
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName="ExampleService.IExampleImportService")]
public interface IExampleImportService {

    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IExampleImportService/GetExamples", ReplyAction="http://tempuri.org/IExampleImportService/GetExamplesResponse")]
    System.Threading.Tasks.Task<SharedLibrary.ExampleInfo[]> GetExamplesAsync();
    
    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IExampleImportService/AddNewExample", ReplyAction="http://tempuri.org/IExampleImportService/AddNewExampleResponse")]
    System.Threading.Tasks.Task<uint> AddNewExampleAsync(SharedLibrary.ExampleInfo example);

下面是VS 2022生成的相同接口,其中它在方法中使用生成的类:

代码语言:javascript
运行
复制
[System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.3")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName="ExampleService.IExampleImportService")]
public interface IExampleImportService
{
    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IExampleImportService/GetExamples", ReplyAction="http://tempuri.org/IExampleImportService/GetExamplesResponse")]
    System.Threading.Tasks.Task<ExampleService.ExampleInfo[]> GetExamplesAsync();
     
    [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IExampleImportService/AddNewExample", ReplyAction="http://tempuri.org/IExampleImportService/AddNewExampleResponse")]
    System.Threading.Tasks.Task<uint> AddNewExampleAsync(ExampleService.ExampleInfo example);
EN

回答 1

Stack Overflow用户

发布于 2022-11-28 18:24:33

经过进一步调查,这个问题似乎是由.NET(6.0)和.NET框架(4.8)引起的,而不是针对2022年和2019年。

如果我在VisualStudio2022中创建一个.NET框架(4.8)应用程序与一个.NET (6.0)应用程序,我就能够创建引用现有类的WCF服务引用。

仍然不清楚为什么在.NET 6.0中没有看到相同的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74540561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档