我计划将SubSpec(适用于< 600行的xUnit的小BDD扩展名)作为单个.cs文件而不是完整的dll分发。
SubSpec具有Silverlight和.NET风格,通过将其拉入CSC预处理器,从单个主文件构建SubSpec的发行版本将是理想的选择。通过“发布版本”,我的意思是创建单个cs文件(不会有二进制版本)。版本控制将由NuGet处理。
据我所知,C#编译器没有单独的预处理器(而是集成到管道中)。是否有其他编译器/工具可以代替CSC使用?
答案 0 :(得分:4)
您总是可以通过cl /E /P
通过C ++预处理器运行它,并且您已经确保在(几乎)每个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"
答案 1 :(得分:1)
您的tools/install.ps1
可以对C#文件执行所需的操作,因为它正在“安装”,因此可以在包含期间处理它 - 可以使用嵌入式$(x)
或$(expression)
多行字符串中的项有条件地扩展(可能通过一组function
扩展为C#代码,形成表达式的[string]
,即模板,或者你可以管道Get-Content
到-replace
个partial
。 (你可能会看到人们使用T4的例子,但如果NuGet是送货卡车,不使用它是一种耻辱。如果你有冒险精神,你可以做一个真正的解析器(或者只是一个可怜的人也在那里。
另一种方法可能是使用install.ps1
类,并将右侧自定义文件中的{{1}}位置放在主要位置旁边。
或者你只是没有用optimise out your #ifdef SILVERLIGHT
s努力tricks like this to get back on your horse。
答案 2 :(得分:0)
为什么不将.cs文件添加到需要它的项目中?
如果要从公共位置引用该文件,则可以手动编辑.csproj文件以使用绝对(或相对)路径,而不是使用项目目录中的路径。