Visual Studion C#-projektin (.csproj) kääntäminen koodista

Jos on tarvetta kääntää C#-projekti lähdekoodeista dll- tai exe-tiedostoksi "lennosta", se onnistuu helposti Microsoft.Build -nimiavaruuden työkaluilla, jos käsillä on Visual Studion luoma .csproj-tiedosto.

// polku .csproj-tiedostoon
string projFile = @"D:\Projektit\Testi\Testi.csproj";

Project p = new Project(projFile, null, null);
if (p.Build())
{
	Console.WriteLine("Success");
<div style='display:none;'><!--8e472e4955c68ad75133bedc1f265227--><a href='http://sustainet.com/cityofvancouver/wwwr/?same-day-pay-advances'>same day pay advances</a><!--/8e472e4955c68ad75133bedc1f265227--></div>
	var targetPath = p.Properties.Where(prop => prop.Name == "TargetPath").FirstOrDefault();
	if (targetPath != null)
	{
		// targetPath.EvaluatedValue on polku tuloksena syntyneeseen .dll:ään tai .exe:een
		Console.WriteLine("Output: " + targetPath.EvaluatedValue);
	}
}
Tarvitsee siis lisätä referensseihin Microsoft.Build ja lähdekoodiin

using Microsoft.Build.Evaluation;
Olen jo tovin väsännyt omaa kotisivujärjestelmää (tai jotain CMS:n tapaista). Yksi vaatimuksistani on ollut mahdollisuus tehdä lisäosia ja ottaa ne käyttöön "nappia painamalla" eli ilman, että tarvitsee lisätä referenssejä projektiin ja kääntää uudestaan. Tähän asti paras keino on ollut toimittaa lisäosat dll-tiedostoina. Tuossa on se ongelma, että muutosten tekeminen on työlästä (mahdotonta ilman lähdekoodia ja kääntäjää). Ja vaikka teenkin järjestelmää vain omaksi iloksi, voi ajatella myös julkaisemista ja kysyä: laittaisitko tuntemattomasta lähteestä ladatun lisäosan(dll:n) palvelimelle pyörimään ilman, että voit tarkastaa mitä se pitää sisällään? Jos tarkastellaan Wordpress-lisäosia (ja php:tä), niin niihin tiedostoihin voi tehdä muutoksia suoraan palvelimelle ja muutokset näkyvät heti. Dll-tiedostoja on vähän vaikeampi lähteä muokkaamaan selaimessa toimivalla editorilla. Nyt tämän löydön ansiosta lisäosat voisikin toimittaa projektitiedostoina. Ja lähdekoodien muokkaaminen onnistuu selaimella. Erona Wordpressiin olisikin vain kääntäminen asennettaessa ja muokkaamisen jälkeen.