【问题标题】:Export configuration data along DLL when building构建时沿 DLL 导出配置数据
【发布时间】: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


    【解决方案1】:

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

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

    输出定义,例如TRACE;DEBUG 在 DLL 旁边的文件名 MyProject.defines 中。

    【讨论】:

    • 我还没有将此标记为答案,我很想知道其他人是否能找到更好的方法。
    猜你喜欢
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2010-09-18
    相关资源
    最近更新 更多