我正在使用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,考虑到我有很多项目,这非常耗时。
构建时是否有其他方法可以导出部分或全部配置数据?
答案 0 :(得分:0)
我找到的一个更简单的解决方案是添加此构建后事件:
echo $(DefineConstants) > "$(TargetDir)\$(TargetName).defines"
输出定义,例如文件名TRACE;DEBUG
中的MyProject.defines
与DLL一起。