Während der Programmierung in C# mit Visual Studio 2008 wünsche ich mir oft "automatische" Code-Generierung. Wenn möglich, möchte ich dies erreichen, indem ich meine MSBuild-Lösungsdatei an Rake weiterleiten lasse, die Ruby-Code für die Codegenerierung aufrufen würde, wobei die resultierenden generierten Dateien automatisch in meiner Lösung erscheinen würden.Jeder hat Erfahrung, Rake von MSBuild für Code gen und andere Vorteile aufzurufen? Wie ist es gelaufen? Was sind deine Gedanken/Empfehlungen?
Hier ist ein Geschäftsbeispiel (von vielen möglichen Beispielen, die ich nennen könnte), wo diese Art der automatischen Code-Generierung hilfreich wäre. In einem kürzlichen Projekt hatte ich eine Schnittstelle mit einigen Eigenschaften, die Dollarbeträge enthielten. Ich wollte eine zweite Schnittstelle und eine dritte Schnittstelle, die dieselben Eigenschaften wie die erste Schnittstelle hatten, außer dass sie mit einem Geschäftseinheitsnamen "qualifiziert" waren. Etwas wie folgt aus:
public interface IQuarterlyResults
{
double TotalRevenue { get; set; }
double NetProfit { get; set; }
}
public interface IConsumerQuarterlyResults
{
double ConsumerTotalRevenue { get; set; }
double ConsumerNetProfit { get; set; }
}
public interface ICorporateQuarterResults
{
double CorporateTotalRevenue { get; set; }
double CorporateNetProfit { get; set; }
}
In diesem Beispiel gibt es eine "Consumer Business Unit" und eine "Corporate Business Unit". Jede Eigenschaft von IQarterlyResults wird in ICorporateQuarterlyResults zu einer Eigenschaft mit dem Namen "Corporate" + [Name der Eigenschaft], ebenso wie IConsumerQuarterlyResults.
Warum Schnittstellen für diese, anstatt nur eine Instanz von IQuartlerResults für Consumer und eine andere Instanz für Corporate? Bei der Arbeit mit dem Taschenrechnerobjekt, das ich erstellte, musste der Benutzer mit 100en Eigenschaften umgehen, und es ist viel weniger verwirrend, wenn er mit "vollqualifizierten" Eigenschaftsnamen wie "ConsumerNetProfit" umgehen kann.
Aber lassen Sie uns in diesem Beispiel nicht stecken bleiben. Es ist nur ein Beispiel und nicht die Hauptfrage.
Die wichtigste Frage ist diese: ich für die Codegenerierung Ruby und ERB Liebe verwenden, und ich liebe Rake mit Abhängigkeiten zwischen Aufgaben zu verwalten. Um das obige Problem zu lösen, möchte ich MSBuild zu Rake aufrufen lassen und Rake/Ruby die Liste der Eigenschaften auf der "Core" -Schnittstelle lesen lassen und dann den Code generieren, um alle abhängigen Schnittstellen und deren zu erstellen Eigenschaften. Dies würde jedes Mal ausgelöst werden, wenn ich einen Build mache, weil ich es in die MSBuild-Datei für die VS.NET-Lösung einfügen würde.
Hat jemand so etwas versucht? Wie ist es für dich gelaufen? Welche Erkenntnisse können Sie über Vor- und Nachteile, Erfolgstipps usw. austauschen?
Danke!
Jeder? Bueller? (Ich mag MikeJs Antwort, aber er benutzte Nant anstelle von MsBuild). –