自定义 MsBuild 任务因程序集加载错误而失败

Posted

技术标签:

【中文标题】自定义 MsBuild 任务因程序集加载错误而失败【英文标题】:Custom MsBuild Task fails with assembly loading errors 【发布时间】:2021-09-17 00:03:57 【问题描述】:

我使用 .netcore 5.0 定义了一个自定义 MSBuild 任务,它可以访问 here。

“Application”项目在其构建过程中使用“SnykTaskFile”。

当我构建“应用程序”时,出现以下错误:

System.BadImageFormatException:无法加载文件或程序集 'System.Diagnostics.Process,版本=5.0.0.0,

如果我从“SnykTaskFile”中删除以下代码:

    var processInfo = new ProcessStartInfo();
    processInfo.FileName = "cmd";
    processInfo.WorkingDirectory = Location;
    Process.Start(processInfo);

然后再次构建“应用程序”,它构建成功,但是如果我有一个围绕“位置”的逻辑:

  if (Location.Contains("...."))
      
          return false;
      

它抛出另一个错误:

System.IO.FileNotFoundException:无法加载文件或程序集 'System.Runtime,版本=5.0.0.0,

【问题讨论】:

【参考方案1】:

根据答案here 和 git hub 中的“自定义任务不适用于 NET5.0”的讨论,看来我应该使用 netstandard 2.0 作为任务项目类型。

【讨论】:

以上是关于自定义 MsBuild 任务因程序集加载错误而失败的主要内容,如果未能解决你的问题,请参考以下文章

TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败

使用 MSBuild 发布 VSTO 加载项会出现错误:“SignFile”任务意外失败。 System.ArgumentNullException:值不能为空

未能从程序集 C:Program Files (x86)MSBuild14.0inMicrosoft.Data.Entity.Build.Tasks.dll 加载任务“EntityClea(示例代码

雪花程序因任务执行而失败

构建服务器加载自定义代码分析规则集失败

由于sgen.exe错误,MSBuild失败