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.
``` csharp
// polku .csproj-tiedostoon
string projFile = @"D:\Projektit\Testi\Testi.csproj";
Project p = new Project(projFile, null, null);
if (p.Build())
{
Console.WriteLine("Success");
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
``` csharp
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.