天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Visual Studio對(duì)程序集簽名時(shí)一個(gè)很不好用的地方

  由于我們的項(xiàng)目底層使用到一個(gè)通過(guò)LogicalCallContext實(shí)現(xiàn)的上下文數(shù)據(jù)管理框架,導(dǎo)致所有的Unit Test不能正常運(yùn)行。具體的現(xiàn)象在《只在UnitTest和WebHost中的出現(xiàn)的關(guān)于LogicalCallContext的嚴(yán)重問(wèn)題》有過(guò)詳細(xì)的介紹。解決的方案就是對(duì)相關(guān)的程序集進(jìn)行強(qiáng)簽名,并加到GAC中,是Unit Test能夠識(shí)別基于    LogicalCallContext項(xiàng)目的類(lèi)型。有了Visual Studio這個(gè)強(qiáng)大的IDE,程序集的簽名工作很好實(shí)現(xiàn)——僅僅需要在Project的Properties對(duì)象框的Signing Tab中指定一個(gè)Key File就可以了。但是,Visual Studio做得不夠好。

  一、Visual Studio會(huì)自作主張地在項(xiàng)目根目錄下復(fù)制一個(gè)Key File 

  舉個(gè)例子,假設(shè)一個(gè)解決方案中具有兩個(gè)項(xiàng)目:Lib1和Lib2。現(xiàn)在我們需要使用“同一個(gè)Key File”對(duì)Lib1和Lib2進(jìn)行簽名,Lib1、Lib2和Key File(Key.snk) 對(duì)應(yīng)的目錄結(jié)構(gòu)如右圖所示:Key.snk和Lib1和Lib2處在相同的目錄下面。

 

  現(xiàn)在我們右擊Lib1項(xiàng)目文件,選擇Properties菜單項(xiàng)進(jìn)行項(xiàng)目屬性對(duì)話框,選擇Signing Tab頁(yè)進(jìn)行程序集簽名相關(guān)設(shè)置。選中Sign the assembly復(fù)選框,在下拉框中選擇<Browse>選項(xiàng),并在彈出的文件選擇對(duì)話框中我們的Key File:Key.snk。

 

 

  但是當(dāng)你選中Key.snk這個(gè)文件的時(shí)候,Visual Studio并不會(huì)用將這個(gè)文件作為對(duì)本程序集進(jìn)行簽名的Key File,而是會(huì)自作主張地將該文件拷貝到Lib1所在的根目錄下。最終被用于程序集簽名的不是我們希望的那個(gè)File Key,而是該File Key的復(fù)制品(如下圖所示)。

  我不太明白微軟如此設(shè)計(jì)具有怎樣的考慮,但是對(duì)于我們目前的項(xiàng)目來(lái)說(shuō),我是無(wú)法接受的。上面的例子中只有兩個(gè)需要簽名的項(xiàng)目,就需要維護(hù)兩個(gè)Key File,但是我們的項(xiàng)目中有數(shù)十個(gè)項(xiàng)目,就意味著需要維護(hù)數(shù)十個(gè)不同的Key File,從維護(hù)的角度講,如果有朝一日我需要更換另一個(gè)Key File, 我就需要為每個(gè)項(xiàng)目進(jìn)行更新。

  那么我們有沒(méi)有辦法讓所有項(xiàng)目采用同一個(gè)Key File進(jìn)行簽名呢?當(dāng)然有,不然我也不會(huì)寫(xiě)這篇文章了。總的來(lái)說(shuō),我們?nèi)N不同的解決方案。

解決方案1:通過(guò)AssemblyKeyFileAttribute特性指定Key File

  AssemblyKeyFileAttribute特性定義在System.Reflection命名空間下,專(zhuān)門(mén)用于指定在對(duì)項(xiàng)目進(jìn)行強(qiáng)簽名時(shí)采用的Key File。所以我們只需要在AssemblyInfo.cs中(也可以在其它地方)指定我們采用的Key File文件路徑即可。通過(guò)下面的代碼,我們指定我們對(duì)Lib1項(xiàng)目指定了我真正期望用于進(jìn)行簽名的那個(gè)Key File。

   1: [assembly: AssemblyVersion("1.0.0.0")]
   2: [assembly: AssemblyFileVersion("1.0.0.0")]
   3: [assembly: AssemblyKeyFile("..//Key.snk")]

NET技術(shù)Visual Studio對(duì)程序集簽名時(shí)一個(gè)很不好用的地方,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲一级特黄 | 四虎永久在线精品国产 | 2022国产麻豆剧传媒剧情 | 亚洲最大日夜无码中文字幕 | 榴莲黄版无限刷 | 黑丝美女娇喘 | 亚洲国产五月综合网 | 亚洲国产在线2020最新 | 色噜噜色啪在线视频 | 内射一区二区精品视频在线观看 | 9久高清在线不卡免费无吗视频 | 久久机热视频 这里只有精品首页 | 国产欧美国日产在线播放 | 伊人久久影院大香线蕉 | 91久久偷偷看嫩草影院无费 | 日韩男明星 | 亚洲精品无码成人AAA片 | 老阿姨才是最有味的一区二区 | 久久久久久久久亚洲 | 嫩草电影网嫩草影院 | 51国产午夜精品免费视频 | 国产亚洲一区在线 | 九九免费精品视频 | 国产婷婷色综合AV蜜臀AV | 99久久国产综合精品 | 快播h网站 | 色就色综合 | 日美欧韩一区二去三区 | 久久国产乱子伦精品免费M 久久国产露脸老熟女熟69 | 花蝴蝶高清影视视频在线播放 | 户外插BBBBB| xxx日本hd | 亚洲精品国偷拍电影自产在线 | 日韩吃奶摸下AA片免费观看 | 国产中文字幕乱码一区 | 欧美性情video sexo视频 | 亚洲一区精品在线 | 嫩草成人影院 | 免费毛片播放 | 欧美AAAAAA级午夜福利视频 | 国产成人午夜精品免费视频 |