2010-10-18 30 views
10

Silverlight應用程序(.xap文件,testpage.html,客戶端旁邊的內容資源,瀏覽器設置等)是否僅使用來自常規.NET應用程序的System.CodeDom創建?這意味着我有一個控制檯或winforms應用程序來創建Silverlight應用程序 - 這可能與System.Codedom?CodeDom和Silverlight

我已經搜索過高和低,還沒有找到關於此的任何信息。

+0

哇,這是一個非常有趣的問題。你有沒有嘗試過自己?我無法想出爲什麼不可能的原因,但我不確定。我想一件重要的事情是確保生成的程序集引用Silverlight平臺程序集(mscorlib,System.Windows等)的正確版本,而不是它們的桌面對應程序。 Silverlight應用程序無非是一個擴展名爲.xap的zip文件中的程序集和AppManifest.xaml文件的集合。我很好奇導致你想要這樣做的場景是什麼? – KeithMahoney 2010-10-19 00:09:07

+0

謝謝基思。我一直在尋找同樣的選擇MSBuild,但人們似乎建議MSBuild是矯枉過正CodeDom.Compiler足夠經常的情況下 - 我只是不知道這是否是Silverlight的情況。一個場景可能是一個eGreeting卡的創造者,在這個場景中有很大的定製(我知道這可能有不同的方法,但爲了爭辯,我們只是說這是它需要的方式) - 一個核心的ASP.NET網站從用戶輸入中獲取一堆不同的參數,結果是編譯好的Silverlight應用程序。多次這樣做。 – Stan 2010-10-19 02:29:48

+0

對於您的情況,我建議您採取另一種方法,例如一個通用的Silverlight應用程序,可在運行時動態下載所有定製數據。如果你決定採用代碼生成路線:我希望我能給你一個更好的答案,而不是「沒有明顯的原因,爲什麼它不應該工作」。 – KeithMahoney 2010-10-19 05:31:00

回答

4

雖然這將是一個挑戰,但它應該是可能的。如果你看看框架本身的功能,儘管有一些選擇。

  • 例如,Regex類使用System.Reflection.Emit編譯您regulare表達;

  • XmlSerializer使用System.CodeDom生成用於序列化和反序列化XML的程序集;

  • ASP.Net調用C#編譯器(csc.exe)將ASPX頁面(以及ASP.Net應用程序的所有其他部分)編譯爲程序集。

這些都是創建一個有效的程序集的選項,從非常複雜到相對可行。

關於你的Silverlight問題的一部分。這應該只是創建有效項目的一個例子。可能最簡單的方法是創建一個您可以想到的最簡單的Silverlight項目(如此,沒有任何內容),並嘗試用三種選項之一來模擬。如果你有這樣的跑步,而不是逐步添加部分,直到你有你需要的東西。