gpt4 book ai didi

logging - 是否可以在项目文件中指定 MSBuild 自定义记录器?

转载 作者:行者123 更新时间:2023-12-03 09:22:00 25 4
gpt4 key购买 nike

msbuild 有一个命令行参数“/logger”,允许您在构建时指定自定义实现的记录器。 (https://msdn.microsoft.com/en-us/library/ms171471.aspx)

msbuild.exe /?

...

/logger: Use this logger to log events from MSBuild. To specify multiple loggers, specify each logger separately. The syntax is: [,][;] The syntax is: [.] The syntax is: {[,] | } The are optional, and are passed to the logger exactly as you typed them. (Short form: /l) Examples: /logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral /logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML

我想实现我自己的自定义记录器。确保我的开发团队的其他成员在构建时都能使用它;我想直接在项目文件本身中应用某种设置。

理想情况下,这意味着如果有人通过 IDE、msbuild 命令行和/或使用 devenv 命令行构建项目,自定义记录器将始终运行。

可以在项目文件中使用什么设置、属性或其他机制来设置自定义记录器?

最佳答案

答案是否定的。记录器是构建引擎的配置设置。您无法启动构建,然后配置构建引擎。这是来自 MSDN 的代码片段-- 它显示了构建引擎初始化的正常流程:

// Instantiate a new Engine object
Engine engine = new Engine();

...

// Instantiate a new FileLogger to generate build log
FileLogger logger = new FileLogger();
// Register the logger with the engine
engine.RegisterLogger(logger);

// Build a project file
bool success = engine.BuildProjectFile(@"c:\temp\validate.proj");

//Unregister all loggers to close the log file
engine.UnregisterAllLoggers();

可能有办法破解它,因为每个 MSBuild 任务都会收到对构建引擎对象(IBuildEngine 接口(interface))的引用,您可以将其类型转换为 Microsoft.BuildEngine.Engine 并调用 RegisterLogger 方法。但是请注意,这是错误的,因为您将为构建中的所有项目全局修改引擎,并且它可能随时无法工作或停止工作。

关于logging - 是否可以在项目文件中指定 MSBuild 自定义记录器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com