yksi motiiveista blogini siirtämiseen Markdowniin oli lopettaa tukeutuminen Windows Live Writeriin, jota ei enää tueta ja jossa on useita vikoja. Mutta yksi asia, johon se oli kätevä, oli Kuvien liittäminen viesteihin. Voisin vain käyttää Windows clipping työkalu ja liittää kuvan suoraan postitse. Markdownissa, minun täytyy tallentaa kuva tiedostoon, ja luoda joitakin markup viitata kyseiseen tiedostoon.
tällaisissa pienissä automatisoiduissa tehtävissä goto-työkaluni on hämmästyttävä LINQPad. Minulla on siellä satoja käsikirjoituksia kaikenlaisten hyödyllisten asioiden tekemiseen.
tiedostonimen luominen
ensinnäkin komentosarjani täytyy selvittää, mihin leikepöydälle tallennettavan kuvan voi tallentaa. Tämä riippuu siitä, millä tietokoneella olen käynnissä, kun GitHub-arkistoni kloonataan eri poluille. Tässä nopea ja likainen LINQ temppu valita oikea kansio kumpi tietokone olen:
var path = new { @"C:\Users\markh\code\web\markblog\wwwroot\posts18",@"C:\code\soundcode\MarkBlog\wwwroot\posts18" }.First(p => Directory.Exists(p));
seuraavaksi minun täytyy luoda tiedostonimi. Käytän” etana ” post etuliitteenä, plus inkrementing numero. Jälleen, käytän nopeasti Vähän LINQ löytää ensimmäinen pääte, jota ei ole käytetty.
var prefix = "css-social-media-icon-list";var fileName = Enumerable.Range(1,100) .Select(n => Path.Combine(path,$"{prefix}-{n}.png")) .First(p => !File.Exists(p));
Kuvien tallentaminen leikepöydältä
nyt tiedämme, mihin haluamme tallentaa kuvan, voimme käyttää System.Windows.Forms.Clipboard
– luokkaa päästäksesi levykuvaan ja tallentaaksesi sen PNG-tiedostoon. Älä anna nimen ”Windows Forms” – nimen laittaa pois-tämä luokka on helpoin tapa päästä leikepöydälle ja sitä voi halutessaan käyttää konsolista tai WPF-sovelluksesta.
päivitän myös leikepöydän sisällön MarkDownilla, jonka haluan liittää blogikirjoitukseeni. Joten nyt kaikki mitä minun tarvitsee tehdä käytön jälkeen Windows clip työkalu ottaa kuvakaappaus on ajaa Tämä skripti ja liitä Markdown minun tekstieditori.
if(Clipboard.ContainsImage()){ Clipboard.GetImage().Save(fileName, ImageFormat.Png); Clipboard.SetText($"!(/posts/2018/{Path.GetFileName(fileName)})");}
viemällä sitä eteenpäin?
So I ’ ve got liittämällä kuvan minun markdown virkaa lähes yhtä helppoa kuin se oli Windows Live Writer, mutta seuraava askel olisi sisällyttää samanlainen prosessi Visual Studio koodi, jota käytän minun editor. Luulen, että tämä voitaisiin muuttaa Visual Studio koodi laajennus, mutta epäilen, että se tarkoittaa uudelleenkirjoitus solmu.js ja oppiminen miten VS koodin laajennukset toimivat. Jos onnistun, kirjoitan siitä, miten tein sen.
mutta toivottavasti tämä on hyödyllinen kaikille, jotka tarvitsevat leikepöydälle pääsyä C#: ssa, ja antaa myös ideoita siitä, miten LINQPad-skriptejä voidaan käyttää manuaalisten tehtävien automatisointiin.