[英]Single Visual Studio C# project, multiple DLLs versions?
我们有一个主项目,使用FEATURE_1,FEATURE_2和FEATURE_3作为启用这些相应功能的三个条件编译符号来创建单个DLL。
MyLib.dll =>的FEATURE_1,FEATURE_2和FEATURE_3已编译为
现在,我们希望同一个主项目吐出3个不同的DLL,如下所示:
MyLib.1.dll => has only FEATURE_1 compiled in
MyLib.2.dll => has only FEATURE_2 compiled in
MyLib.3.dll => has only FEATURE_3 compiled in
目前,我们在VS2013中进行构建,并且这些编译常量在.csproj
文件(位于<DefineConstants> </DefineConstants>
标记内)中定义,并对其进行硬编码。
是否可以通过命令行传递它们,以便我们仍然可以维护一个主csproj,但仅通过更改命令行即可在RELEASE配置中构建3种不同的风格(例如:gcc的-D<buildFlag>
样式)? 该解决方案还有其他项目,它们旨在与RELEASE配置一起使用。 我也欢迎其他易于使用和维护的技术。
我们实际上是在尝试避免创建伪项目或影响解决方案中的其他项目(解决方案中的21个项目)-对于某些非常简单的事情来说似乎过于矫/过头。
我没有对命令行做任何事情,但是为了解决类似的问题,我创建了单独的项目(定义了Framework Target和任何条件编译符号),然后将所有项目文件添加为LINKED文件。 这样,我只需要修改一组源文件,但是每个项目都将编译成自己的DLL。
以链接形式将文件添加到项目中
我不确定这是否适合您的情况,但是在为不同的.NET Framework版本开发库时,确实为我节省了很多时间。
您是否有完整的周转时间?
您可以为每个功能创建单独的项目,然后在打包阶段将较小的程序集合并为一个功能,而不是在一个库中定义所有功能然后禁用其中一些功能。
Microsoft具有ILMerge,而ILRepack是开放源代码替代品,
https://www.nuget.org/packages/ilmerge
https://www.nuget.org/packages/ILRepack/
这样,您就无需进行条件编译,因为后者很难管理,并且复杂性已转移到打包脚本中,可以轻松地对其进行管理并将其检查到源代码管理中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.