当前位置:首页 > 共享经济 > 正文内容

.NET: 谈谈共享项目 (Shared Project) 的使用

wxianyue4年前 (2020-12-31)共享经济970
国内最强的AI写作工具,帮你写爆款文案

从 Visual Studio 2015 起,共享项目 (Shared Project) 作为新的一种项目类型被添加到项目模板列表中,它的主要目的是使多个不同类型的项目之间可以共享代码或资源。相比它的前任 PCL(Portable Class Library),它要灵活得多。因为 Shared Project 共享的是代码或资源,并且不会创建单独的程序集;而 PCL 则是共享程序集,需要单独编译,且会生成单独的程序集。

在项目中,使用 Shared Project 可以帮助我们很容易地解决一些难题。本文主要讨论,在开发过程中,我们如何使用它以及它具体能够帮助我们解决哪些问题。在这之前,首先来看如何创建与使用 Shared Project。

创建与使用

前面说过,Shared Project 是一种项目模板类型,因此我们可以在现有的解决方案中创建一个新项目,然后在项目模板列表中选择 Shared Project:

共享什么项目好

好项目好赚钱_共享什么项目好_好商机好项目

在这个 Shared Project 中我们可以添加所有需要与其它项目共享的代码或资源(如图片、Html文件、JS 文件等)。另外,为了保持它与现有项目命名空间一致,可以在“解决方案管理器"中右击它,选择”属性“,更改其 Root namespace。

接着,要在那些需要引用它的项目中对其添加引用,如下:

共享什么项目好

当引用后,所有在 Shared Project 中代码和资源能够在这些项目中正常使用。

此外,Shared Project 自己无法编译,我们需要通过编译引用它的项目来生成 exe 或 dll 等程序集。并且 Shared Project 本身不会输出为程序集。

使用场景场景一:输出针对不同 .NET Framework 版本的类库

如果你正在开发一个类库或框架,而且最终要发布它,好让别人能够使用,所以你的类库可能需要满足多个 .NET Framework 版本,如 2.0/3.5/4.0/4.5 等,由于更高版本的 Framework 加入了更多的 API 以及更多的语法,使得在代码编写时更容易,比如 LINQ 等,然而低版本却不支持,因此在类库中的代码就需要对不同的版本有区分。

对于这种情况,借助于 Shared Project 和条件编译符号 (Conditional compilation symbols),就可以解决上述问题。我们可以这样做:

1. 创建一个 Shared Project 项目;

2. 再分别创建多个类库 (Class Library) 项目,它们的目标框架 (Target framework) 分别指定不同的 Framework 版本;

好商机好项目_共享什么项目好_好项目好赚钱

3. 为每个类库类目设置不同的条件编译符号(在项目属性中的“编译”选项卡里设置),如 NET2_0/NET4_0/NET4_5 等;

4. 然后,在 Shared Project 中就可以使用这些符号来判断 Framework 版本,并写出针对不同版本的代码,例如下面的代码(注意其中加粗部分):

            this.windowChrome = new WindowChrome
            {
#if NET4_5
                ResizeBorderThickness = SystemParameters.WindowResizeBorderThickness, 
#else
                ResizeBorderThickness = SystemParameters2.Current.WindowResizeBorderThickness,
#endif
                CaptionHeight = 0,
                CornerRadius = new CornerRadius(0),
                GlassFrameThickness = new Thickness(0),
                UseAeroCaptionButtons = false
            };

场景二:输出针对不同 Platform 的类库

如果项目中一个(或多个)类库需要同时支持 x86 与 x64 两个不同的 Platform,以使软件能够在 x86/x64 上都能运行,这时 Shared Project 也可以派上用场。

共享什么项目好_好商机好项目_好项目好赚钱

一个具体的例子是开发 Office 加载项,如果你的加载项是 COM 类型的,则需要分别为 32位与 64位 Office 提供对应的版本。对于32位,程序集的目标平台 (Platform target) 可以是 Any CPU,但对于64位,则应该是 x64。

使用 Shared Project 可以很容易解决这样的问题,具体做法:

1. 针对加载项创建一个 Shared Project,将所有代码与资源文件放到这个项目中;

2. 分别创建两个不同的 Class Library,使它们引用 Shared Project,不同的是,这两个项目的目标平台不一样,一个是 Any CPU,另一个是 x64;

3. 如果用到了第三方库,为两个项目添加同样的引用;

共享什么项目好_好项目好赚钱_好商机好项目

4. 除此以外,你还要修改它们的程序集名称,使它们的输出的程序集名称有区别、且有意义。

最后,需要注意的是,修改项目属性时,无论是设置"条件编译符号",还是修改"目标平台",都要注意它们都与项目的配置 (Debug/Release) 是关联的,也就是说,在 Debug 配置中改了,还要在 Release 配置中改;对于此,一个替代的办法是,从配置下拉列表选择“所有配置”,然后再设置符号或目标平台共享什么项目好,则能够对 Debug/Release 都有效。

总结

本文主要讨论了 Shared Project 的使用以及它的实际使用场景,它能够使我们的程序集面向不同 .NET Framework 版本以及不同的 Platform。

其实不难看出,这都是通过修改项目的属性而实现的,这样一来,多个项目就可以达到代码相同、程序集属性却不同,从而解决实际对应的问题。如果你在开发过程中遇到了类似的问题共享什么项目好,也可以尝试一下使用 Shared Project 来解决。

手机浏览,点击图片保存二维码到相册,然后打开微信扫一扫选择本二维码图片就可以进入,电脑端微信“扫一扫”二维码,进入找聊天搭子平台,里面有找饭搭子、找对象、找陪伴服务等等

扫描二维码推送至手机访问。

版权声明:本文由小猪信息平台发布,如需转载请注明出处。

本文链接:https://pplcom.com/post/528.html

分享给朋友:

相关文章

定制店铺淘宝客采集软件 加盟 代理 共享后台联系客服

定制店铺淘宝客采集软件 加盟 代理 共享后台联系客服

价格说明 划线价格 指商品的专柜价、吊牌价、正品零售价、厂商指导价或该商品的曾经展示过的销售价等,并非原价,仅供参考。 未划线价格 指商品的实时标价,不因表述的差异改变性质。具体成交价格根据商品参加...

记者体验共享餐厅 “玩概念”还是真便捷?

记者体验共享餐厅 “玩概念”还是真便捷?

不久前,沪上首家“共享餐厅”从黄浦区市场监管局拿到了食品经营许可证,目前已开始试营业。什么是共享餐厅?吃饭也能共享吗?青年报记者由此展开了调查。 “共享餐庁”所在的商场在地铁上方。跟一般餐庁不同,共享...

企业办公过程当中,想要共享文件,哪个软件更好用?

企业办公过程当中,想要共享文件,哪个软件更好用?

大家千万不要用亿方云,很垃圾的小型公司文件共享软件,这就是他的自导自演的钓鱼贴,自己提问,然后自己来打广告。希望大家不要上当受骗。知乎er送我上去,让大家看到,不要被这个骗了。 邀请别人来回答 自...

疫情期间,社区共享果蔬店如何解决生鲜产品储售短板,销售额暴涨

疫情期间,社区共享果蔬店如何解决生鲜产品储售短板,销售额暴涨

往年,春节前后国内生鲜农产品都会迎来一波销售高潮。但今年受新冠肺炎疫情的影响,许多超市、菜场等生鲜售卖场所被迫营业,再加上为了避免人与人接触实施了一系列封城、封村、封社区等相关措施,于是出现了居民“不...

大学生自助厨房_营销/活动策划_计划/解决方案_实用文档

大学生自助厨房_营销/活动策划_计划/解决方案_实用文档

第一章 项目摘要 1.1 项目简介你是不是不想每天都在食堂吃那些天天都一种口味的菜?你 是不是又不想到外面餐馆去吃那些美味却不太安全的饭菜?你 是不是想体验和同学一起下厨的神秘感觉?大学生式厨房就非...

实体店生意太差经营不下去了?来了解下共享系统模式把

实体店生意太差经营不下去了?来了解下共享系统模式把

共享店铺就是将门店的工位、员工、管理经验、房屋水电等资源,共享给想要开店,但又没有足够资金投入的人。门店为这些人提供场地,员工,服务,这些人为门店提供客户。这些人在不稀释原始股份,不参与原始股份分红,...