由AssemblyInfo Task覆盖的Log4NET设置

时间:2009-04-07 14:49:05

标签: msbuild log4net assemblyinfo

我有一个使用log4net的项目,可以在开发者计算机上正常运行。构建时,构建脚本中的一个步骤调用AssemblyInfo任务来设置版本号和日期等。但AssemblyInfo文件也会丢失该行:

[assembly:XmlConfigurator(Watch = true)]

有没有办法让AssemblyInfo任务不覆盖该行,或者相反,让AssemblyInfo任务重新插入该行(以及相应的using语句?

2 个答案:

答案 0 :(得分:2)

您实际上可以将log4net [assembly:...]行放在任何将编译到程序集中的文件中。很多时候,我们只是将它放在具有“main”方法的.cs文件中,并且它的工作正常。

答案 1 :(得分:1)

嗯,想一点不同,你不必只有一个汇编信息文件。

这就是我们为解决方案所做的工作,每个项目都有3个汇编信息文件:

  1. AssemblyInfo.cs - 包含Guid,AssemblyTitle,AssemblyDescription和任何特定于程序集的属性。

  2. ProductAssemblyInfo.cs - 包含AssemblyProduct,AssemblyVersion和AssemblyFileVersion。这样,产品/解决方案中的所有程序集都共享相同的版本。

  3. CompanyAssemblyInfo.cs - 包含AssemblyCompany,AssemblyCopyright以及我们希望所有程序集共享的任何属性。

  4. 使用“添加为链接”引用项目2和3,这样它们就可以从单个源代码共享。现在,您可能不想采用相同的方法,但您当然可以使用类似的结构,并将XmlConfigurator放在与程序集版本详细信息不同的汇编信息文件中。