构建时沿DLL导出配置数据

时间:2017-03-20 21:12:34

标签: .net dll configurationmanager

我正在使用Visual Studio / msbuild部署.NET应用程序库DLL。该库具有针对其所针对的多个平台的许多配置。我需要找到一种方法来导出每个构建中的一些配置数据,因为加载这些DLL的容器必须能够知道哪个适合每个平台。

我尝试使用自定义程序集属性,但这些require the assemblies to be loaded, which I can't do (even with ReflectionOnlyLoad):我需要在加载之前分析每个程序集,特别是确定是否应该加载 EM>

一种解决方案是为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,考虑到我有很多项目,这非常耗时。

构建时是否有其他方法可以导出部分或全部配置数据?

1 个答案:

答案 0 :(得分:0)

我找到的一个更简单的解决方案是添加此构建后事件:

echo $(DefineConstants) > "$(TargetDir)\$(TargetName).defines"

输出定义,例如文件名TRACE;DEBUG中的MyProject.defines与DLL一起。