我計劃分發SubSpec(一個小的BDD擴展的xUnit配合到< 600線),爲單一的.cs文件,而不是一個完全成熟的DLL。C#編譯器:預處理只有
SubSpec有Silverlight和.NET的味道,這將是理想的通過CSC的預處理拉,從一個單一的主文件建立SubSpec的發行版本。通過「發佈版本」,我的意思是創建單個cs文件(將不會有二進制版本)。版本控制將由NuGet處理。
據我所知,C#編譯器不具有單獨的預處理器(而不是它集成到管道)。是否有其他編譯器/工具可以用來代替CSC?
我計劃分發SubSpec(一個小的BDD擴展的xUnit配合到< 600線),爲單一的.cs文件,而不是一個完全成熟的DLL。C#編譯器:預處理只有
SubSpec有Silverlight和.NET的味道,這將是理想的通過CSC的預處理拉,從一個單一的主文件建立SubSpec的發行版本。通過「發佈版本」,我的意思是創建單個cs文件(將不會有二進制版本)。版本控制將由NuGet處理。
據我所知,C#編譯器不具有單獨的預處理器(而不是它集成到管道)。是否有其他編譯器/工具可以用來代替CSC?
你tools/install.ps1
可以做,因爲它是被「安裝」,因此它可以包含在處理它什麼就是了C#文件 - 這可以通過在有條件展開多行字符串使用嵌入$(x)
或$(expression)
項目是(可能由具有一組function
s表示擴展到C#代碼作爲[string]
S中的表達的形成組分),即,模板,或可以通過管道的Get-Content
通過一些-replace
秒。 (你可能會看到使用T4的人的例子,但是如果NuGet是送貨卡車,那麼不要使用它,如果你覺得冒險,你可以做一個真正的解析器(或者只是一個窮人的一個)在那裏了。
另一種方法可以是使用partial
類,讓主一個右旁的customiser文件install.ps1
插槽。
否則你只是還沒有嘗試使用夠硬optimise out your #ifdef SILVERLIGHT
stricks like this to get back on your horse
你總是可以剛剛經歷C++預處理器通過cl /E /P
運行它,你已經保證有它安裝在(幾乎)所有的VS安裝。雖然這是一個非常老派的把戲:)
// SubSpec.cs
// Bla bla license stuff
#include "File1.cs" // This gets read by the C++ preprocessor
#include "File2.cs" // and expanded out
#include "File3.cs"
爲什麼不只是將.cs文件添加到需要它的項目?
如果你想從一個共同的位置參考的文件,那麼你可以手動編輯的,而不是使用一個在項目目錄中的.csproj文件使用絕對(或相對)路徑。
對不起,也許我不夠清楚。通過「發佈版本」,我的意思是創建單個cs文件(將不會有二進制版本)。版本控制將由NuGet處理。 – 2011-04-13 07:17:48
聽起來像是一個好主意,我會嘗試一下,我不想做包括(儘管它打開了幾個選項......),只想創建一個沒有SI的單個cs文件LVERLIGHT條件(減少膨脹,讓我接近魔術500線)。 – 2011-04-13 07:19:53
+1尼斯黑客,但很多人試圖挽救幾百megs所以不是一個偉大的假設(我知道你知道的) – 2011-04-13 23:21:53