【问题标题】:Log4NET setting overwritten by AssemblyInfo Task由 AssemblyInfo 任务覆盖的 Log4NET 设置
【发布时间】:2009-04-09 16:00:35
【问题描述】:
我有一个使用 log4net 的项目,并且在开发人员机器上运行良好。当我们构建时,我们的构建脚本中的一个步骤调用 AssemblyInfo 任务来设置版本号和日期等。但是 AssemblyInfo 文件也丢失了这一行:
[程序集:XmlConfigurator(Watch = true)]
有没有办法让 AssemblyInfo 任务不覆盖该行,或者相反,让 AssemblyInfo 任务将该行重新插入到文件中(连同适当的 using 语句?
【问题讨论】:
标签:
msbuild
log4net
assemblyinfo
【解决方案1】:
实际上,您可以将 log4net [assembly: ...] 行放在将编译到程序集的任何文件中。很多时候,我们只是把它放在具有“main”方法的 .cs 文件中,它就可以正常工作。
【解决方案2】:
好吧,换个思路,你不必只有一个程序集信息文件。
这是我们为解决方案所做的,每个项目都有 3 个程序集信息文件:
AssemblyInfo.cs - 包含 Guid、AssemblyTitle、AssemblyDescription 和任何程序集特定属性。
ProductAssemblyInfo.cs - 包含 AssemblyProduct、AssemblyVersion 和 AssemblyFileVersion。这样,产品/解决方案中的所有程序集都共享相同的版本。
CompanyAssemblyInfo.cs - 包含 AssemblyCompany、AssemblyCopyright 以及我们希望所有程序集共享的任何属性。
使用“添加为链接”引用项目 2 和 3,这样它们就可以从单一源代码共享。现在,您可能不想采用相同的方法,但您当然可以使用类似的结构并将您的 XmlConfigurator 放在与您的程序集版本详细信息不同的程序集信息文件中。