当前位置: 首页 > 编程语言 > C#

格式化自定义工具的输出,以便我可以双击VisualStudio中的错误并打开文件共享

时间:2023-04-10 14:46:08 C#

格式化自定义工具的输出,以便我可以双击VisualStudio中的错误并打开我写的文件一个命令行工具,可以预处理许多文件,然后使用CodeDom编译它们。该工具将版权声明和一些进度文本写入标准输出,然后使用以下格式写入编译步骤中的任何错误:foreach(varerrinresults.Errors){//errisCompilerErrorvarfilename="PathToinput_file.xprt";Console.WriteLine(string.Format("{0}({1},{2}):{3}{4}({5})",文件名,err.Line,err.Column,err.IsWarning?"":"错误:",err.ErrorText,err.ErrorNumber));然后它写下错误的数量,比如“14个错误”。以下是错误在控制台中的显示方式示例:PathToinput_file.xrpt(73,28):ERROR:Anobjectreferenceisrequiredforthenon-staticfield,method,orproperty'Some.Object.get'(CS0120)when我在VS2008中将它作为自定义工具运行时(通过在我的一个项目程序集中的构建后事件命令行中调用它),错误显示在错误列表中,格式正确,每列中的文本都正确。当我翻转文件名时,会弹出完全限定的路径。行和列与源文件不同,因为预处理很好。列表中给出的项目中唯一突出的是具有构建后事件的项目。问题是,当我双击错误时,没有任何反应。我原以为该文件会在编辑器中打开。我很清楚Microsoft.VisualStudio.Shell.Interop命名空间,但我认为应该可以通过写入标准输出来实现。编辑:我注意到一些问题并自己修复了它:这样做的标准方法是将您的工具实现为MSBuild任务,然后您可以访问日志对象:Log.LogError(subcategory,errorCode,helpKeyword,file,lineNumber,columnNumber,endLineNumber,endColumnNumber,消息,messageArgs);例如,这就是Gendarme/VisualStudio集成的工作原理。此外,这使您可以更轻松地将工具添加到项目文件中(就在删除任务完成之后)。如果您不想这样做,请确保您的工具输出的内容与VisualStudio所期望的完全一致:http://blogs.msdn.com/b/msbuild/archive/2006/11/03/msbuild-visual-studio-perceived-errorMessages和messages,formats.aspx一个重要的“问题”是文件路径应该输出为绝对路径,否则VisualStudio可能会错误地展开它们。由于我在工具中输出相对路径,VisualStudio使用调用项目的路径形成文件的绝对路径,这意味着生成的绝对路径不存在。解决办法就是简单的输出源文件的绝对路径。以上就是C#学习教程:格式化自定义工具的输出,让我在VisualStudio中双击错误打开文件分享全部内容。如果对大家有用,需要进一步了解C#学习教程,还望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: