From ca18b8f6832c374637d27911c0cdb92cfb4697b4 Mon Sep 17 00:00:00 2001 From: Daniel Cazzulino Date: Mon, 30 Sep 2024 16:59:05 -0300 Subject: [PATCH] Add ThisAssembly.Vsix for VSIX extensibility projects Fixes #405 --- ThisAssembly.sln | 7 + img/ThisAssembly.Vsix.png | Bin 0 -> 17952 bytes .../ThisAssembly.Vsix.Pack.targets | 6 + .../ThisAssembly.Vsix.csproj | 41 ++++++ src/ThisAssembly.Vsix/ThisAssembly.Vsix.props | 8 ++ .../ThisAssembly.Vsix.targets | 123 ++++++++++++++++++ src/ThisAssembly.Vsix/readme.md | 66 ++++++++++ 7 files changed, 251 insertions(+) create mode 100644 img/ThisAssembly.Vsix.png create mode 100644 src/ThisAssembly.Vsix/ThisAssembly.Vsix.Pack.targets create mode 100644 src/ThisAssembly.Vsix/ThisAssembly.Vsix.csproj create mode 100644 src/ThisAssembly.Vsix/ThisAssembly.Vsix.props create mode 100644 src/ThisAssembly.Vsix/ThisAssembly.Vsix.targets create mode 100644 src/ThisAssembly.Vsix/readme.md diff --git a/ThisAssembly.sln b/ThisAssembly.sln index a282d162..38bda251 100644 --- a/ThisAssembly.sln +++ b/ThisAssembly.sln @@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThisAssembly.Git", "src\Thi EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Shared", "src\Shared\Shared.shproj", "{8E0F2A43-C9AF-4E46-BF70-CF8645371C12}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThisAssembly.Vsix", "src\ThisAssembly.Vsix\ThisAssembly.Vsix.csproj", "{0C4A87B0-FBD7-42BE-A504-DBBC55132146}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -65,6 +67,10 @@ Global {F34F8470-7C60-4BB8-ACB5-569D6D0F6A46}.Debug|Any CPU.Build.0 = Debug|Any CPU {F34F8470-7C60-4BB8-ACB5-569D6D0F6A46}.Release|Any CPU.ActiveCfg = Release|Any CPU {F34F8470-7C60-4BB8-ACB5-569D6D0F6A46}.Release|Any CPU.Build.0 = Release|Any CPU + {0C4A87B0-FBD7-42BE-A504-DBBC55132146}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C4A87B0-FBD7-42BE-A504-DBBC55132146}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C4A87B0-FBD7-42BE-A504-DBBC55132146}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C4A87B0-FBD7-42BE-A504-DBBC55132146}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -73,6 +79,7 @@ Global SolutionGuid = {ADF2DC9F-5F77-4F6E-8804-CFF5892CD064} EndGlobalSection GlobalSection(SharedMSBuildProjectFiles) = preSolution + src\Shared\Shared.projitems*{0c4a87b0-fbd7-42be-a504-dbbc55132146}*SharedItemsImports = 5 src\Shared\Shared.projitems*{14d0c5ba-8410-4454-87a2-7bf5993e1ea2}*SharedItemsImports = 5 src\Shared\Shared.projitems*{31c53cce-13fc-4890-803a-85cd146b909b}*SharedItemsImports = 5 src\Shared\Shared.projitems*{3e7158b5-bfef-4416-8226-9096c7c98268}*SharedItemsImports = 5 diff --git a/img/ThisAssembly.Vsix.png b/img/ThisAssembly.Vsix.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab2e11bb6126acaedb3ccfb157415c15ee6b345 GIT binary patch literal 17952 zcmb5V1yEdF*CkAV0Kpq~LgQ}1EkF|-g1fr~cZc8>LSw;#I|O%kcXxMp|2yyd{NGH? zyx-IeRnXk(Tj$<;?%8Xvz4kg`U**J65D5^WprBABB|wT$P|!?}|JM=VAb%;iPS_wH z?;I7yMWD(?i4GtKux7%t!cb5ZF-Xq_?;*z@>?AZCp`cK^{{Ft}vn?=&f)cBd1PLp< z>7J~>yJ5}D!JWH`V*Eh&koNl|0fX@eYLWsL3>2dc2oHZJ48T^P1wOur72<%ige?r; z(N4yqf0Tea`0-WI56h$6A6?`&h0oEos>vcHzttX z<^SZ^#sB~mHdwYq?oxGq;Vt&Y)@OIL`qzKZ0fBVi`Qi5tZ_HRcPgTFqSO!1X6b;Rm zTo>k7xXt)jm#Cv*23mGX=En)tiu*pW2oq4Gy7b1ed#qGoq+Xwd*xDJSt}HQxXD$!1nvXZC2S z!U6}HG;9c}S0k&e>ty0Eamxd+vSkyNZk$TQQl2IH_1@|X_>)N+&AzS;qgYs@2T z@86v9aJR$VrP_kx<`e=L4eGX!}@>^p2$&Pc!<5erp`<-Z!a{N7^$k z#+AQ5zw_eurtJM<(i-6L;%u$nh*645+Nohxh3%?XbGNxDyZl2oD8BXLZGBgB&f3A% z7p0AQ+gpY=joR{!9e{$_*m)rLY4m$ZN08y0ASOV;-Z;cT*R9->eh0LS;VY<1qCzxe zB$JQ}d30DW-M5tUSGk6$B0hT*3l+Ncis|Bc$6B|HaVK6rFq0mD zqlmYwp&$+}Ugz96$jMs39kmWwcyI)1-t&U#P^~=NQnj^=ml_TE^ogi5y6*`FkqfFVGWdI{kryi1VcPVP(!34FHI}Id*cP zRA`W*oGwxQpdz&(oZrnhicMEERJJ2cH>7wd>BZ;DL*R9Xt2wq5jXMrO;-{?$HwYX^%n?EU57M zi^J>#?`tc`O6wca*lP{(*4}Fn+*H@aP{k)_t&Q6rQMV`YiZhe_`#q-P<`RLuWn-eX zz*i+zgU)wxB?E;mc={6wEr{moEuZ94oBXyacSa8!=Uu8k{c5x#Gwz)M4eOY{rZ&B% zneTcU{K}m$)9!f8Egm;MbvbUO)eT&lC%xq&c*P3yEi-M^3Zu9NLJDW$gS zJ7@nreq?L-c31i}&(gP~@yFc-I$)w};IO0NLw?z2YgA!*byOruu^P&^CkHBH@g&&}eE;8*T2y@Cpn{QGE9XyP4gjod};j zx>2p(_m&i{-J9u35#Kv6qSAQBdYVj-HE(Dkmz0tISEW+<FPen9*tMF#F*O+qb0gYT&o@w!qy|?}>?1oK5C@0*{IlWdcq3y7s}_ zbaSsQ*x+E&LF9Ue-^B;fqcf+5T@`Wlz&U|mowb&#epX2W-6%iv>vt@o~f~K<2xJM33JZa%% zOO=f?3bnzYKxvgvjL8AS)Ma!_y1lPcTnf3G*lwooHYZ<;N*)|>&crBhTI>dEBXjBZ zBI?o$zSCd8pKms@)2P&ute(@;dLof=y!VuA*nAn&?ZZ5sS-%=SLa<F`kDBerW2UhOXwGzb?kHY3cB{e$F^L|zYyDx997u97nQUNV0cV=5D2Vy z_bkZND6T!;DoV)UUCds4?So7TmhYI;%Bs*YW-1HCbmaYsVK{EmVOp(+6GJK0Uh#Cz zqpbu@m{x}6MZncl?W6ODJqLT2lO}2(CWPf^oY8sB1)KlE^3Fw_tAHHX_>_IMa&>P# zWI#c;l)#_?ol7*hb(OATx4yC$sq`(;X%7Sz*_6}kBfcHtH^j1i~9gVwxUN<2$9=B{+txSwwS z?hV%+q3@E$0AHKW4Si~C|Es_jqUo8GV&5}XSR`S6Sqo!0p+p0nS(QXb+P3oi3>_N$ z0)%)Nmx{nM;TO)?9UhCN^1CYWe4wL#XmYiCU8YQJbkG_p(&oX584(|&e^Il4apCP& z`9pbpqOeF(?{kUal8w>o(@@O%M}4V)p)9@0&!{fmTZb=fM4>OX;P~x$gs(on%({gB z-QLezDVEsat&puh^cwERS6p_YAKbc=!X{Bs(cLlj7CFWL`uN&KFtJ&u!QN#0T^OwU?UEtaQdGHm?sy9RA)Cf?# z>9ZFXl#(zVQPk*F{e0bPhG@11IU{XJBLN1~CenF_r`QT_vntQTzQlX<%AZ%lHJj>V zmp<(9oPoz48ZT3O$P*l<(;b5yn)7GwfbZwd=!OP8?d80g6>E^^X4GXCTu5?Tj*M27 zRP5My(S5=dbj>jzs{`*h8mIx4=b_dU`?fkA3+#J#r&5TM@xF8A>3teI72iVda+L8u zIS2%0wEl|Gku(F~auQb6_M3W4VOnpEq=tpkzz3mf zGm$KZ2wrhzz68*G*RAV%Q0hDH3>ew3y1)ZZ5oDqEZl%Si#QT_NdO%g#avMls`oe;n zvvuLTYppfz2QjPG4|U(&e6vgx)02|u&IwK1r>IS9LlHH!CI6Go>@kazF;lL8mEN^~ zm*{ppvR{2j13WI)ciZB%1DM2%^Pih0enzJ8hFP=q$9^M8gKrV*6Y#SbQT0lE&IzYGyg>;QlkogjA<<aRS(zYWBBSC2@(n-ydAsQ-K-Z*v{xP|5lZqg}+kt{zfYkCoT`ooAUxtz0Myn=HoA zEvoI0_i!AI6<{9#0DQRfiX7_t0v?Sf5{&FI0PMHjU|2preyp!N_A-wbZ+N>APGirW zVA1A8F^H4M7`Hbd+?kGJ*4(d+WEqMB3YzYKlX?2VkSZ z-~xfbN_?VJ>AwX@AUck5i9<)I$Xzb?`;YlswTf>-4SeWZqSa^La1Y@NyZUq>&7FWP8?ZV_dab#|NEjCrfy9_QuVo z%YHd_C=axzv|t^VcEl$rn(~g`PL(Nz=ZR0(ZPSVf91-M-Jz=ZThf!zQYhm&BzW$@9 zN}=b)ne>+3@uA-QIOsvo3N*Pr%VX;pv#k9Jrz*3|l<1IHdq)49He$b1i#CyX-gxgZgB;E)w)JbFRxqq-0@RkoC*$t{Rq0u-L}qqjTt}S=LAADL%Ktz$Q*-!pKsz zjgv5!)9BvV>;VT!$HQr!XUqmACJl?1JG{qz0r#ypC? zw$uB{wijI;W~oGvKre1%Bvt={vi4F6$*O<)p*5usLUu#tgPZP?rX1R+N^GRN(zy^P zbOrxBGS0u48ryA%#watKv+#sXZ1WS!vK`um)o%8aHI?5Ya!GHD*d<}I`@xvU z|Es1$NarxKTAK+6^l|eQcC>aO`rCk6)D*i;=S2+b=YiFcoiqJ2f36F#LCQBZyTNC* z=T^sStH8@WH7%k!6(XG~qdFUv^rI}Sdqc9|j-QwKlzm*=dd2zIGG zOMj$?_Lpm}*F=*@jZfes#l^?<%`D)}Ef6!iUibcBZCh8@%^LFB{1j|ew z*qI3oo-PY5h!d|GS)PyPHQ)6>i4Bo?g-R6+3cbEGR~^#j#Bx;w2y8m?SJIH!@ac56 zofH{`HF3S3E@D3E_=x0xg(n(et%?o5>XZ8|^F$p*eLqPI4;+_e!otmc-k5wO8axr4FExtTw*qB8SECQ=?g zb);HCR#AV-h5zZ=uY-(XAv`~c(6%DG!1sx8_H5h8T?}6)UA=K$YPES z`C{4{j1R_9@1D?8o#P5!jn}mC7gG%}aCq?9@>(u>>78+^N>1qn2CiB{63oiTnpHdNP5ZIaz9#mXt$xK`-l7ub7*?w=X)q*( z#fY;b2`FTRH=4`*{TCK}_ z-O;al}9`qhkb}^>mEJ*o7Y&3r6?dIkWS4NooVl8!wC5XdH z4nE7pIVio%p;NMxYtm9PI0{jD?+y>CXbcH0+ULE!lvm_9I!;;UIH9Sg2i|fA+o1GW zFp!5?gD>oB`V^Mp=RWT5=@zV>i&l?Ov3IoxA?A+bgu+qBj&<;YXA>w8czZE4v>b8+~4wIMK%ks?-c>k-xO7*_U5Fz8r39E1=ZP*ODfpS>chmd%08vohsTW!U!^&ZkWj6_ycJsdRf!k1PllEab z+VF^$`r5)!0g;^^H#s3JTHn4z;7cn|4`%4{hqS1dG8gex9c{;8W+|Tc5|YsSxxw0I zid3z0#6_}%|<1mFBTcY8CY7#Tz6Kb0YjCL~+*S&VV+t{7wNiwo7? zbZ=<6RVVpiYx*H)cu0)OBx|}Q^jC5)Z>(k^y|lZ;hp*|%Bx*!Ti>-y+UhA@-h!ecs z2e4pp=}1t;^@oxt&yRUfNN;UJ=+pyR_(}=)6+3$fYruMc>icaDcgBD)S1i%?v>sf5 z3Li|58((~qN-+t(Uw%{NvMSJM3+s5Hb8xktld^1tTl3IeLNm4Y*C--HjyDag+wWwJa66nbr8 z8b@ly$&tP6sOvFHh1@=>aKybv#gV^8DbcqHLxX|jbhjp|EwnN6OL)+9Lm$Pqc2z#? zjAjT&x}oCqr4Qt28>>>$6*t4FUHJN*wEGiH(vXZmj~`6xR);nRqNR`8EDt$T^d4UH zETesu*Kzr><)1w+oHjSr&Q`$L9>G zxr?(fzQKz8-&Wpw`1?uh;0RPoZ4l)dTtPXBl*;vSW;0wV@kN*R4oCm3R92Ccoyka( zJ?4jr2KcG>CTF|vUMko>OQL}r-DSKpKo9%(dI}Oe#UmNb6M!<+NG*G7ZoHdEs}6qz z%})4L{|t=rf@JXB2+Yr{Tv(Ban#eF-%AV{}0)*s22HdpyY7%_XmK->_-r=uFq!{rZ z>7VGsq_RrN+fwTw1q2BX^Og_({V*?l$ji z4;@)iJ&PYZ$wTBjviP0cIaq9SQ6E~=`Kfh61<9YQDz@=Sjg@yNfArY0Ax~;01-! zkGfUn;Si6&d4F9RrigkS?mn`q5JO;N?+dC)9^~)v6F}Z&<4|p_*1&2?wGHB(IA1-Gj9D5@_Ef*Qw zOlu;fUc$<`mIud6oo~c#&2SV-JQ`F>x=R=fRadYc3{*%UolioyOm}g&e6boU=Zo06 zC+HdZbHJ_C!xoAmEaskyGD2Xdu6tS%AF;dMK73TLI1l^-(8!+WSTJ_#_E{BHUUcKg zcA}Fmr1M19F8Is|0s*O*$i^f~#A~}TeWLEx_Z3)~10s9wvpT8wKf(_c!5B)r_9h~U z{$T{6R-+sT=`g>>Yw!+sjLe)B9z`64y{UA}88$~=;t4V?t#7`)FNU$Yt2qhbVzP`; ztGmEUy{w|zGHgWy$P*)E1oEydWrf#@P)&7I5&OSiv-E{U5f0(xR@35G1IHvy#lPG* zB|PatM>0zk(#RX?7jFo%z}q$IV)A?f2GQY$G3#VkT;bv~3iVeboO#abYqVmeYoGJQkeuZc`G1SjJ zy_pV$=PslMwD~ND%8fL8pX@Izb7JX9ZMSkoikdFSD;_~y&DYv|3&2ue+|gp*tw*j} z4@sv_t)9p1^(8t1xRoHLw^9JMU+til3EsJM0tnrOXmus<+&bZc5e?lQ`fTxCK59zp zH=W?$24((3EtG6jM@Em?RoH!;mIH|Rd{tn~fvnY~a84`rC{AS9f6%jVm|X?YYy)t}p^ z>Njv35};&b$daMRgKLB0qq>T*zO8mp8#9tiT3)rg0mM41(*cXIoC`w{_YQZY9psd9 za)H1s!$?v%hy>Da%3?5+*ANQMX%?;Q@OC9PL01t4Q2HnDgC15!_U zycAUhU!FWXfA0-LuRf+-QXk-pOW+56<5S zx{>PYS=swb1m zU-+8)yW!8-x=W*O)KSyrFa#>(rHH=6KZx0tu!_4oz$vzg$A+zSJ{2NqAgT#1+QUcV zV~OsfKCIx0Kz~{!cw;?X$Xg5ZN5Ym0)FLR`vAIJ_D)?m`#`QM+{m`%IXduFzB=6}Eo zV-_{$>GOnwGv!jHd|vYK8GD zB)StZwt}#W%=rT+36fJQPD+%kxR&?7y%v3*kE?On2kRg4}N9BFafUBnXKoS1f%xIKnvauUlh^Ua{2Oz zgKC5SKC*(Db|)8;pWGZ2ar&g7K%LEs^h?GoxzxJ3CJDv@nhh18;yk1Y8Ff~iVchhR z-UFMHkd5qu9lfytH-G`|E&TUpd$)!L4C)p)HcY8D*5d`;J)8y{r{=7=6em8hvrwk4 zdYLKME$mZlDP#!+DQ@HAHnuGWx3eqL!-o|f{W7bNG3GPYF#BU2^Z6ajAe1kK7X$pL zi*C>@eI@NoHF0@#CM$nJk^@0E{h%0p*2_ph#!ZGX$r~R+4_;L}4RSVLOyJpP*0LS^ z<|6)4K8UtxtaMKqVT?V*tbuiB4oKwN%Qd;83JsI~A-w=d6h-UK@{3ikaD!s0qUViT zD^Cc=xxG^8Yr>NfH%$J-`9K)~oVs8=r-bjqP#}ZYAbP@G+a&Qw3Ph*x&89mVGFkmA zLm=@C(Jp_Q^olJ5xXx0B-j$Vc{2>D>GASq+^ah2Js3L3k(|&$*F&_)cM0MD z4I=S_YlTJ~(kAV z0&a1j#l5?#!4ldNfH!a#7Q%kc?^tVr)Z(EISZ&`31a)e}n6UM5J54{9bYYZu?H5fS=Zjqol<%;BDCB!1 zd{9hG+ncB3=JMBuD<|BoQTYN!8D#@-q&F|NxwPgu1k=AT@(i@*4Zg|^xx^p11RK?X zM|cx5R!0)W@H_1oN?8mNEG!u71Z{+}Z5){IM;CS*)I zdI)TLAgNlFhwWI!_XG{U7?a44Qt}-|ubsOkKPfD!rT#owpxM3x^vyVIdr-)GuReQo zy8HCrja}DZT@jHy+*P;tg@13(YjIDmBYVW;<|HS07dRi4E*0Jm_vkr^9h)7buB>Wz6V}#RT z))&K_ZkFM~=JBwte`DWm_26B~la!O{_3bz{NGNhCbZ!zpN>DpoZ`It-B@Src|5c8? z|KtW;aaR9Qlk_{?m}g%zuD$VK7LgRvK$2j``Qvf-pQSgY7EF5Va;+8)3|GB_>t_PZwY8YL#bfjs%zB#svWqY&^Z|QH z4NEfCBy(`z0^iu&(PY#0wkh0R9+gZ#ljE~_A8z#;s|hNmuZ6(aKg&K`k<9^wrO!Gf z@&4$NTOFxo3Q7CuV%`Yh>S~_Ts#dHi{+1&4d)gP?V(zkr0+nR9B>Qak=yaztT@?68aZeP8gf?Xksw zmfkC?_af=WqXHkAwQKFjFYqQ;(^K6Q7384GZ^{F)Q|?R;=%;94UjnM#CtS68{I3%- zObKru-oc|%ZUoFS#{1{1nS4iK=TX>|;veI4dvLa@=o@UhKG;LXrlL!ls&R%C}> zJW|pdDIk*LjbS6vEvR;(5xMODiobp9QIN{3zs+)jH+T=9>HNS=VdC9|^$qXS06JEf zkvAZJ_H24p3m{X_VY_Q@c{W85xo^eRD*~G~FpxAW?HTn#dKQ#CvDtz(c2_&_8n3@! z<8PijnnK^WXEd<=pz@)UJ;w9}pI&7M9(780jK|Yn5ZXZeY1294BiYTp*#6>3#rRqgdvfctNICv@p0 zf>~qOs&d!r-6b=M!W3_N`9R`4mDVR(^_K~H^&d32g?`5ytGQ^6%83yHqUavih#*0u z1TTlKrNNYZZx5^txzZQqdj!i_`+k0f9nr%J?rj``_;2|pY>|D&$t_<)<&S`Tid*7i zsY8-*4JIL%gG3#YBfs&Y#bgeXNMc*UCEIN|@_=KLqrSqhjA@)%fx}dxGQnSXl3$bj zMBC=tW2C+sF__T!2azF>Q!&z$1#pX&72YethelX`)z-Umh@l85if~?0&|t!CA@ZU6 zF24M=PddeW9MY=Vq~t-~P}S+#4E6gJi^p4bk497@`NV0kb1_-4AGXNFL&>F&M&)USP^>2r^UqmE&*xn|{f%xSzrS#}_$B1>{P*PKz~h zsIGVjm4%1QjKe@WIFt?J*3x2PcV386^ig3yqfO2k*!X2PQ7EfraxG`tW0`AyCLKN# z3~Q>xbj0jYv;SNg`%a^PB05kp(R(=&_#MJp=r`#SCg@9%zN9v_2CBKd^dn2hO85C^ zQ?eTGd}DYmz|;)+Za6YHKoeIlc0elve9?X4DB z10FfTo;KLO;3mq#y=FUypG(2C=x7eclMa69CO&RCMQ<~iV`bU~q^E5p%0p8p2uSh@ zX*f|OkX8$pzt0QgCq$DIA+2Em4myn38LJPK+*J*n-1OseeG=qTSqY&zc~Q5m{Y5r( z(NG)+k|nvqR-jXWZY|#>%&1zVj!`4b&wSyZzOnLOqjMRpRaRCW6Gt)3cOIG>OFL+v z&-X!KNpOwqt_L?{+iAIzP8-FYCHGGcvpzHw)A#Ow-{laLA`8^&T3FefRD4IC9mLS;8AFZ=qg=Mw> zaOky~#nR%f=H=VKZ2Ij1dE~^z5hqJ|8Z(Ywwij#9cEW2SPM!CO(ybsji_8Ay#C?B< zZ1x~LJr1o{YoD&we_=^Hv(P|m&)>~(W9eS77VDRHtLDm>k!S*apDw_A@3G`MeI zS-j`R+8-NZN9R|ctwaVvZe$pS5vH94ha++ib=EDBAjAAAGWYuO1!Dxw5@4C(Ljff; z_;deU6H;rOTE+K!PnwQcv_<5{_Y)1;J)76Z+>wkza2aED$k9ZA`&)wUUTQieqE|0x zcptX1xZqN~7k?=w4D>2j;Gi!-WUWHWw6m-467-etBXL;ox_RSrpKzq$9cr&_eA7od z#D;i|*Q=lKu{MxuD+tKO^bON+gz7GgwQ>#-vO*;ZD;yMOi`4@Jb-t@i>4|+VBNs^< zzd)kAzrS^j@NWzUW8)RUfduz?+=Wo7@lIhjLQP41qjgCJO9BZGVXNDJ;MT~5i=$W;O4o9Fg1`b(mjNakfM2W&>D2Md=ULnR<=FFd3rQRf|n7$?g9r&Rg49rg*c|& zH9)97tOQZ<53N_w;x_^K=@KQ`geXX>z5Z{v{4;M>OhWhgOjCuiIyLMaQqST{+y?kZ zOtCr<;d%|aE2wX%r`-o{{@CpL2FJ)m)6nW*R5N6z8!uT5Ps;~uu`m~CBIMsJjtrQ1 z=`9Y25NkE;FuqMqM@Jrr6gZC#piL|&z}is}1A%HG*r3tFW|#R?TmX$bhr|K7cT?|6HB_$1f2<%RF=cl;I$dvhqI($M$bkJ@BjieSbMv(#>>y{PY&&-g?%JH8JZqjzl_ebY+5zVEXyZt)E^TvxzCy`{FfU}3KRxiokAdnODf9zlHkk)|w2+W;2T*Yt3^?pU6`%>wKLUY`Tz@A6i+9WL%%3Ta({Lwe zPhm=dn($p(8Sj6^9_@npAf)-AN!951jF1Hs`ofn?>2BTcupBP^bKwW#{!1|OSE8f# zE=G)u8#ZHOh8$wy&4$-d1e*OD z`-=OK5rZVBI#0igBeb!I0>-mlKUPL)e1b^uu!fwr9b3VEAO+TKu4Kvq+7uvn=2qQ@ z&;|6+Ai;Eo8+5<|0;EySf4uS?dmvZgEUNI{0K_-ljsXH~^Nx$rPLB56$2(qy5h|@9eS952iE=`{hx) zM}RhM_WBSwT%Dg$O7MW_zdg)+pn191lZuO1$Bh%tQxGSC0VFW&=CQ;+txk|CZRa>!-{y1yb? z_sJ{QUz?Bd$Q<;x9zj-~^N%$$@X#GVLn7jlM8NSL$9zhVb*%=%7xSD=VwZeEL-$t= zA*l6F%$5;NcnyDnBnjYdyBGh3mTTl1T@#|Dm%>)%N%lSCI0)2(4ygoGH|J!#_T#m- zf5sENOk{a8c2n-9IYZ>XrCvzyno_hpWa+zl)quBQ(2#Uj1*Hz>PMiro zwUq`n3Tx%?_TH6xt;R0~6LL~{8}F*i*a07Cy$2o?=cvhnroBnCqyr+CM}~7 z@o2d8)bJiai;y7zFS|!!PDvYgsj%y_dA`?)TD$0zu5RcTin|)zn%h+y@d>rCGf@7o< zZDd6BwMvd-*nR3#cGkdh4EeLB%jc1L3W`lsNU_95l34C4fUM&@q~7UZ{YvJ+rDO&{ zS-*eoAgeOOb53yo5QzIe5$s!;+m7?Q5eA;Vn!am7@nNc_^mmA4rJIQa@AjSh%?^Jj{#5m2zYBd}Iu zr?3cJXokD6jG-Et&mR^a0qxJ8n#Ze+Z_PsmsuHzxHJF;gGK#XlQR~vlf}F}B@5%5Z z@r1av;r`)@I$H^5z*CUn$>D&V)O^38-gM<;HbiP`@dlpez zIFa99>)cP5J#DLROnZl#FoZzh4hD97aU$~okF55y0#714>Di)#oFkVHg|^o44~P@5 z*8l&{nh}t=6DWbG+W(7g{U0;qf6S?w&;Zxbo2!dqM~tJtmOqF~Px<4f%UepF^_b)T zDA4-P&>zoQF=-eNJ)LR}3A0A9o%n#j!Egv#F%K9Z#3WobIDoEL2?2x|1#${)oSkQ5 z{J|FuKAw&n+;FWCCQFV_ieG4Lgz{X+kaJ2_qeDY4yZzVdBmw~EW}_*Qt< z*lOdcw%N8uCD^#5u8G<7=F3~f&`XI0pTJg>Zq&<2YcF~@p4ai8zGXd&f&PQYt12Pi zeHo(({ER}-xZafQvClm6CA1BJ!E4-foH40dK` zEng_N^psg9i8QBDRSSq(&B#1Vg)J4ZB=K-J_iSu-W2cjam|Yf_J9Mnr8u>k8vpg)9 zj!D$sZN28hQb(h(m|rM1-WrjCoGJpIf0}#U5vkId_Wz#(Au4U5E@@~7f5WS=nr4+&e> zYYMMhz3BWAi}756TVMqZCUPM?HD|+oQ{(!D)3G_iNM8uq8bXYWcl#HL?OAG|Fg7{hRe}9J6VnjZk%}^* zvL%F{5(x!h3ZC|p36eoN1AhxnG*2!AF$arjPa`@Xya`l}Kd=D6ESi&oGz&Si(Y6^g z?YmGI%h|%<2OiXEXVChR)t{%o?8^e_Uz~42la^M9i8+cT!EO3?p*8%c0ggv|kWGwb z(p9UZ1&t+@NS%v#v2~>Y#CVGhNhffV0Pkvw;Ih>y$}V2AdOe!ivUKG9?~D+i%%qHz zFv($k>_Tq^Es#ayd&Q1;X4)|qv7J@p2$vypxRP0<-Zbvgqb73oh-gslT*X(^ee9=4 zgIa`NSkbTM056F0H3y!m(%TqQBcD(s5!KH~bF+BI98U$TO!z;h@?7{31i!^EH-l{V zw`~qLmy|qecCK6Eoi#nk4G^a-VUj&0_&X$Iv_;aV0`aOL?BnIHSp0A1ods>@ar^Y7 zN(EUrNv!`{W9+{Nn6p%A)r~aA2;5bkM2N6H{8#V!ZE}@x;x6Y7&t;!9qw~~C+O<9B z4Yz4>)`B5aMgROIXn^wQUw}eK0O0_52;Jv1VWClTdDz5inN?#5--lK`JDS$my1gDE zwFkwXk*_~}_&120et^K$ap<~!&v_R@8a}laJA#ffKRwm9QKdA?1opBL6LKVhn3**n9 zj2P>IYV&b8SXytxltQ1a^9lsHW_bOLqF4mvXFU4&Tjpu_eh9(tK#1?7l-8!&(#xWj ziR&W{HoyyMxU0Ms16}|4%W56U*_h~r&?xsMx-0f+WcJPRn)#q2?C=II{F>B$W7s+M zFvKZ;c@`@6+aS|KH_GhON*0dHC7Ci=&o*Cj&5^97rnZ-eJ_stL+R|x$YKbC2;=*GW zde=ow2J-$)T78TcI!}?%3dvuP#DhK9GFTsKjo8e;t;lQyCpMDR&8P$e?flz%nL_`2 zeuXmFi2VHK8=eK5N3kR0#}jsk!5d`Mb!dqG53!kv)F=y&<^ zUvyXCdeO&1YXJwC6@vedOa8yBQ|Z|HjF<{A0f31X$S8;>%NJJnj*~bg_x6drVeS)O zAXVx#gvj{ow0R*}nV$978gXSiL{;u{=Fm2x*&xm>Vzc^sQM~@Dgi#w?16x4`!X|-W z&JSO;o~?WU;cunao5$by(CL?-KX~%ZFD!J_*~?zLwb4o?+IJ7jb8fE1^LPtqp@(R! zu(vr%$Rw=gjs^$XlGF;MjjP)&>q~5B%{MLZBGqFzZy~Mg zjw*!u2SM-zv7|bV{Fn1(2cgkYXI(535SLh_`&rcPsyOmh54PCbFbx`s)PRBXA?laE z#tNjl+PwdV;VFqJB{3ZW427k;!*dN>xsW{;jkteFV?0e}pl_U}`Sb*#Y?Is8gueVd zANWVhY-s2AXtwe5*bYeuJPOVzsy+3EQO*e2V7uWnPC}- zLetqD2|qz<$Q}UX4J2&Fp$;{8DF)!Qkv9KPG*!xL`5i}01qoaOZRp-j^1n?)Yh=iY zf2LDhx3x!0G^qJj?2;0$PRtY2LDB@}!R?G|yS z(pr5m4mfvLm~UczH&>oBI4i?dwxasf=^LRsH=?tP zhs#<>Np$uOkMEgfHNnP*uti2nOc24n7#FA2WFN+(pXAKPHoLFWU$bcp?sxt%iwW<( zD>};!MCXNvtSVRD7LifRoqgqPC}nFRy2MX~v=*UD-kNE24cwyC#cZ3@hnojS=kCj5 zX;Rp`gFte7%5m{_Hy*fMGS~l{UNGNDt}C6oy{1vwm8;>;G3Ra`25H${(8cV*bE!Us zQ<+05u7Am3^akaDYM(ire2(m$yq`YYbCmgGpgvDP+!ret-qcY?S6bN-;n6f!f!uK+p0cp;9I?^_sH2oXt?o#q37FrK*`M9qXTj3D z+C^%@<4RHg(wHE7?63XYip0q48&%__e@S5vW!l)W&o5l4rG=6pKU;md_CxQGO!=Kx zpj{Zys9jrvnQpNJjf#4E$Of1Q^z(-d41%SVud~QY2uVl%7A;OfO9??H5@bj}TeX5H zm5^u}I$tggEY0KSTFRr#FN#o{&T z4d>7*7YrHa3nb3)5I~=YKYJNI)0smi;u!M&4Kus6$N^6<>GTk(1spKN_ z)boh;bBh&sy0GBAz|8QmGrLSyTIjw(_f!23mCMGM2=3(GZp!}LW{s*=#^t^p2m*&D zkwzg=mlqGkTXB;^`cp--bj3`#32tfKb=FG@3uNTvqP5VBDO>|{M`^^XeL}1PHm!%NoAa{vVJ{-yx;pL^z4H62ci|brPN=B#7ZFyWn5EXFFJfBo52C zGZ-(P%r;sX6uQ6B(;j5KTBt-lQv%YBQ!l4^ZlWU*ikgQ?yDXoBA3;9{!%NLC6}}6$ z-TJkE;iCj*+6qn1uv7e+CE-f%~WC-RT&m&wuLp^|E0A1o|OJ7Ta&TkoCtT z`so04{C=P9TB0R38cb+W$q{GXlzScKEZ3_CE`3j~OYQ0D`N^IhvXKzg=xJcdv?Ibo zzt&_)?&gi%Ol}Bbt${~_!Oik&^uA)!CB}r^8_fOV(986FY$>K{KyBLM#a6*GWgqh> zCvQ1k3wxNH^qXov=hWTSa}=N3%^aRF*bdy13}PW?V+S7n-Cwn($3v%RC=+o2R$6NL z@jvf0!YQ4Ui#DGffVYjbL0bF56sqln0JuWy7%69a^aYgMhB+f1&8jiZ(0YCSSOm6j zXZC*9cb(%OA`ie(_=2%R0cb}5=gE0L?H4Tk9bf;S-U9g3u>9>RA*Iy*`dSVSf%Em3 zDW+AoPxF|!sFcRG8)2;U2L}i9v0f-`t^eO1^{bhBJvzqwmP-vd7g+6oKk&3i|Fx2^ z(_Y(R+LV<}aWjioCH$E#IsN~otEUY?dhoBwkkPHNBv@+LX$W+s3y)-1or=4R-CTiQ}Aa^o|@wNqzJYTI#l`PG$^x{XV$*2exZi?ykh zwd>!#B6y|Jj!hcskG_h0&owlt(QVio&we2KpYTLo;4oa+N$rB2;yDj@cfDKodSb~B z89ujp0ZnXst1`EIU#zF`u;BgVnUDB(-n^URH)W!au@R`-=d!H>IG)kkc)GbAIGk}) zsjm=y86NK5hJL%+>W + + + + + \ No newline at end of file diff --git a/src/ThisAssembly.Vsix/ThisAssembly.Vsix.csproj b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.csproj new file mode 100644 index 00000000..8bc5ee27 --- /dev/null +++ b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.csproj @@ -0,0 +1,41 @@ + + + + netstandard2.0 + latest + true + false + $(PackageTags) vsix + + + + ThisAssembly.Vsix + This package generates a static `ThisAssembly.Vsix` class with public +constants exposing key VSIX manifest properties. For example: + + partial class ThisAssembly + { + public static partial class Vsix + { + public const string Id = "MyVsix"; + } + } + + + + + + + + + + + + + + + + + + + diff --git a/src/ThisAssembly.Vsix/ThisAssembly.Vsix.props b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.props new file mode 100644 index 00000000..39c849a1 --- /dev/null +++ b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.props @@ -0,0 +1,8 @@ + + + + + false + + + \ No newline at end of file diff --git a/src/ThisAssembly.Vsix/ThisAssembly.Vsix.targets b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.targets new file mode 100644 index 00000000..118a2499 --- /dev/null +++ b/src/ThisAssembly.Vsix/ThisAssembly.Vsix.targets @@ -0,0 +1,123 @@ + + + + <Namespace Prefix='vs' Uri='http://schemas.microsoft.com/developer/vsx-schema/2011'/> + <Namespace Prefix='vs' Uri='http://schemas.microsoft.com/developer/vsx-schema/2010'/> + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(PackageId) + $(AssemblyName) + + + + + + $(Version) + + + + + + $(Title) + + + + + + $(Description) + + + + + + $(Product) + + + + + + $(Company) + + + + + + $(NeutralLanguage) + en-US + + + + + + + + + + \ No newline at end of file diff --git a/src/ThisAssembly.Vsix/readme.md b/src/ThisAssembly.Vsix/readme.md new file mode 100644 index 00000000..313a2d51 --- /dev/null +++ b/src/ThisAssembly.Vsix/readme.md @@ -0,0 +1,66 @@ + + +This package generates a static `ThisAssembly.Vsix` class with public +constants exposing key VSIX manifest properties. + +![](https://raw.githubusercontent.com/devlooped/ThisAssembly/main/img/ThisAssembly.Vsix.png) + +For example: + +```csharp + partial class ThisAssembly + { + public static partial class Vsix + { + public const string Id = "MyVsix"; + } + } +``` + +In addition to making the [VSIX manifest metadata](https://learn.microsoft.com/en-us/visualstudio/extensibility/vsix-extension-schema-2-0-reference?view=vs-2022#metadata-element) +properties available as constants, the package also provides targets for those properties +with sensible defaults from project properties so that the manifest can leverage +[placeolder syntax](https://learn.microsoft.com/en-us/visualstudio/extensibility/vsix-extension-schema-2-0-reference?view=vs-2022#metadata-element) +and avoid duplication. + +For example, the following `source.extension.vsixmanifest` uses values from MSBuild exclusively: +```xml + + + + + |%CurrentProject%;VsixDisplayName| + |%CurrentProject%;VsixDescription| + + ... + +``` + +The available properties and their default values are: + +| Name | Default Value | +|-------------------|-----------------------------------| +| VsixID | $(PackageId) or $(AssemblyName) | +| VsixVersion | $(Version) | +| VsixDisplayName | $(Title) | +| VsixDescription | $(Description) | +| VsixProduct | $(Product) | +| VsixPublisher | $(Company) | +| VsixLanguage | $(NeutralLanguage) or 'en-US' | +| VsixDescription | $(Description) | + +As shown in the example above, the syntax for using these properties from the `.vsxmanifest` is +`|%CurrentProject%;[PROPERTY]|`. This is because the package defines a corresponding target to +retrieve each of the above properties. You can provide a different value for each property via +MSBuild as usual, of course. + +Since the `$(PackageId)` property can be used as the VSIX ID, the `Pack` target is redefined to +mean `CreateVsixManifest`, so "packing" the VSIX is just a matter of right-clicking the VSIX +project and selecting "Pack". + + + + + \ No newline at end of file