Shared Project使用笔记

1.概要

本文主要分享如何Shared Project使用,和避坑。

1.1什么是Shared Project?

说简单一点就是微软提供的一个代码共享项目模板,从 Visual Studio 2015 起,共享项目 (Shared Project) 作为新的一种项目类型被添加到项目模板列表中,它带来的好处主要是使多个不同类型、不同平台的项目之间可以共享代码或资源这样我们就不用去重复写代码,或者在特殊情况下就不用将一个类直接拷贝到另外一个类库下。

1.2如何使用?

1.2.1创建项目

找到项目模板

1.2.2使用

创建完成之后,库的图标和常规的C#库不一样是两个菱形。

接着创建一个类,代码如下:

 public class Class1
{
public int Calculation(int i,int j)
{
return i + j;
}
}

然后在需要share的项目上添加引用,接着正常通过类名正常访问该方法即可

2.详细内容

2.1解读

Shared Project当然还有其他的使用场景这里就介绍基本用,看完以上操作之后大家可能会认为创建一个普通的类库好像也能实现,实际上也差不多。

可能更多的会在设计上考虑在Shared Project中放些通用的代码,以Prism举例:

Prism的设计是将xxx.Container(容器)放到了Shared Project中,这样在兼容Wpf和Forms上就不用重复写Container相关的代码了,举一反三那么如果要兼容MAUI和Avalonia实现同样的框架设计那么拿来直接用即可。


2.2使用注意

最近在研究用DDD写服务端,出现一个场景。当拆分多个服务的时候每个细分服务都会使用HttpResponseDTO,那么这个时候我不想使用类库造成“引用混乱”自然是想到使用Shared Project。

结果我在使用的时候出现了一个问题,在写web api层的时候会用HttpResponseDTO,在Application层也会用到我同时在这两层同时引用了Shared Project里的HttpResponseDTO这个时候就出现了一个冲突这个问题查了一早上。项目结构如下:

代码:

 [HttpPost]
public async Task<HttpResponseDTO<bool>> Upload(UplaodVersionDTO version, HttpRequest request)
{
try
{
//.....
//这句代码报错,从Application层引用的实现逻辑。
return await _upgradeService.Upload(version, file.Item1, file.Item2);
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
return HttpResponseDTO<bool>.InnerException(false, ex.Message);
}
}

错误:

严重性 代码 说明 项目 文件  禁止显示状态
错误 CS0029 无法将类型“xxx.Domain.Shared.DataTransferObjects.HttpResponse<bool> [AService.Application, Version=1.0.0.0, Culture=neutral, PublicKeyToken=]
隐式转换为“xxx.Domain.Shared.DataTransferObjects.HttpResponse<bool> [AService.Api, Version=1.0.0.0, Culture=neutral, PublicKeyToken=]
AService.Api

怎么样想都没有想明白为什么会出现这种问题,当我把web api层的Shared Project引用移除之后就正常了。原来VS会将不同层的引用的Shared Project视为不同的对象。



展开阅读全文

页面更新:2024-05-01

标签:都会   可能会   框架   场景   模板   错误   类型   代码   操作   笔记   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top