无法与PackageReference一起使用“ MSBuild.ILMerge.Task”

时间:2018-08-06 17:09:47

标签: msbuild ilmerge packagereference

使用通过MSBuild.ILMerge.Task引用的packagereference时,出现以下错误:

error MSB4018: The "MSBuild.ILMerge.Task" task failed unexpectedly.
error MSB4018: System.IO.FileNotFoundException: Cannot find ILMerge 
executable.
error MSB4018:    at MSBuild.ILMerge.Task.LoadILMerge()
error MSB4018:    at MSBuild.ILMerge.Task.Execute()
error MSB4018:    at error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()

这是因为MSBuild.ILMerge.Task.dll在其程序包位置找不到ILMerge可执行文件。我想这可能是因为package.config和PackageReference之间的文件夹结构不同。

还有其他人遇到过这个问题吗?任何帮助,请先感激

2 个答案:

答案 0 :(得分:0)

我有同样的问题。就我而言,它的出现是由于以下原因(与我的Nuget软件包中的某些更新有关):

  • 有时我的项目文件中没有什么条件可以处理Nuget软件包。每当我更新Nuget软件包时,这些项目文件都会更新,我的所有条件都将被覆盖。我通过在Git中使用diff工具发现了这个问题,并手动添加了条件,然后一切正常。
  • 再次有时我需要更新我的Nuget软件包(我的解决方案包括多个相关项目,因此在构建新版本时需要更新我的Nuget软件包)。如果我忘记在Git中提交更改(包括package.config和项目文件),则会出现相同的问题(在发布模式下)。

答案 1 :(得分:-1)

您可以尝试将ILMerge降级到2.14.1208。

这为我解决了。

https://github.com/emerbrito/ILMerge-MSBuild-Task/issues/13