【发布时间】:2017-03-20 21:12:33
【问题描述】:
我正在使用 Visual Studio / msbuild 部署一个 .NET 应用程序库 DLL。该库针对它所针对的多个平台有许多配置。我需要找到一种方法来在每次构建中导出一些配置数据,因为加载这些 DLL 的容器必须能够知道哪个适合每个平台。
我尝试使用自定义程序集属性,但是这些require the assemblies to be loaded, which I can't do (even with ReflectionOnlyLoad):我需要在加载它之前分析每个程序集,特别是确定是否应该加载它 .
一种解决方案是为 DLL 创建一个伴随的“元”文件,其内容将根据预处理器指令生成,例如:
Configuration.txt:
#if AOT
AotCompile
#endif
#if NETFX_CORE
DotNetCore
#endif
#if NO_THREADS
NoThreads
#endif
在谷歌搜索之后,我认为我可以使用 T4 Text Templates,但他们似乎是 cannot access compilation symbols(并且该问题中建议的解决方法在我的构建管道中不起作用)。 this answer 提供了一个解决方案,但它涉及手动编辑每个项目文件的 XML,考虑到我有很多项目,这非常耗时。
在构建时是否有其他方法可以导出部分或全部配置数据?
【问题讨论】:
标签: .net dll configurationmanager