由于Fody错误,无法编译项目.Fody(或任何其他代码)没有任何更改

本文关键字:Fody 代码 其他 任何更 任何 错误 编译 由于 项目 | 更新日期: 2023-09-27 18:15:28

**这是Visual Studio 2013中的一个问题。

我得到的错误是巨大的,大部分是无用的,但它的关键是

Error   130 Fody: Could not load 'ModuleWeaver' from 'PropertyChanged.Fody, Version=1.50.3.0, Culture=neutral, PublicKeyToken=null' due to ReflectionTypeLoadException.
It is possible you need to update the package.
exception.LoaderExceptions:
System.IO.FileLoadException: Could not load file or assembly 'Mono.Cecil,     Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its     dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'

再一次,因为没有变化,我不知道问题是什么。它正在查找的DLL位于它一直所在的位置。

编辑:显然在这一点上,它厌倦了吐出来的错误,所以它制造了一个新的

Error   42  The "Fody.WeavingTask" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. The system cannot find the file specified.
File name: 'Mono.Cecil, Version=0.9.5.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
   at ExceptionExtensions.LogException(ILogger logger, Exception exception)
   at Processor.Execute() in c:'TeamCity'buildAgent'work'7495521761d392b9'Fody'Processor.cs:line 56
   at Fody.WeavingTask.Execute() in c:'TeamCity'buildAgent'work'7495521761d392b9'Fody'WeavingTask.cs:line 44
   at     Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__20.MoveNext()
编辑2:

而且,错误据称发生在"Fody"内部。在第50行

<Fody.WeavingTask
      AssemblyPath="@(IntermediateAssembly)"
      IntermediateDir="$(IntermediateDir)"
      KeyFilePath="$(FodyKeyFilePath)"
      ProjectDirectory="$(ProjectDir)"
      SolutionDir="$(FodySolutionDir)"
      References="@(ReferencePath)"
      SignAssembly="$(FodySignAssembly)"
      ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)"
      DefineConstants="$(DefineConstants)"
  />
编辑3:

我删除了所有与Fody相关的文件,Nuget在构建过程中重新下载了它们。之后的错误与第二个错误相同:

"Error   42  The "Fody.WeavingTask" task failed unexpectedly." 
编辑4:

真的希望Fody的开发人员看到这一点,因为我们处于绝对停滞状态,直到这个问题得到解决。我们不能"恢复"到它工作的时候,因为当前的配置是当它工作的时候。

由于Fody错误,无法编译项目.Fody(或任何其他代码)没有任何更改

似乎你的错误实际上是在寻找一个类称为ModuleWeaver。这个类是Fody包的一部分。

刚刚更新了nuget包管理器中的包:

   update-package Fody -reinstall

可能会修复它。

失败:确保你的app.config文件没有错误的重定向。删除这个部分,删除所有的重定向。Visual studio通常会将必要的元素添加回来。

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>

再试一次,如果失败,尝试查找哪个依赖程序集失败。你可以编写一个单行命令行应用程序,或者使用LinqPad。

你可以试试LinqPad,如果你还没用过,粘贴这个。

Assembly.LoadFile("path to Fody");
Assembly.LoadFile("path to Mono.Cecil");

您应该会得到一个异常,详细说明丢失的库。

如果你使用的是git,从命令行运行:

git clean -xdf

在尝试了所有我能在网上找到的解决方案后,以下方法对我有效:

  1. Close Visual Studio.
  2. 删除PCL项目和{platform}项目中的DebugRelease文件夹。对我来说,这些位于MyPCLProjectName'bin'iOS'bin'iPhoneSimulator'
  3. 编辑PCL和{platform} .csproj文件并删除所有<Import>标签,除了开头的<Import Project="$(MSBuildExtensionsPath32)'...
  4. 重新打开Visual Studio.
  5. 恢复包(此步骤可能会在您重新打开Visual Studio时自动完成)- Solution Explorer > right-click solution > Restore NuGet Packages

要调试这些问题,您可以使用SysInternals Process Monitor。

一般的方法是:

  1. 运行进程监控
  2. 应用一个过滤器只监视你的应用
  3. 重现问题
  4. 查找丢失的dll。这部分有点棘手,因为

    1. 一个DLL可能找不到几次("Path not found")
    2. 但最终被找到("Success")
    3. 可能不是你要查找的DLL,而是该DLL的依赖项

    所以你需要找到一个从来没有找到的DLL。你也不希望dll没有被找到,但在随后的尝试中被找到。

嗯,这个过程可能相当耗时,所以我开发了process Monitor Log Analyzer工具。有了它,你应该能在更短的时间内找到罪魁祸首。

  1. 运行进程监控
  2. 应用过滤器只监视您的应用程序
  3. 重现问题
  4. 将结果保存为XML(保留所有项目,"Path not found"answers"Success")
  5. 在Log Analyzer
  6. 中打开XML
  7. 从上到下,检查dll是否存在。该工具将只显示从未找到的dll。

免责声明:我是这个免费工具的作者,如果从文本中没有清楚说明的话。

你们中的一些人得到类似的错误可能会受益于这个信息,它指出具有不同Fody版本的项目不能使用相同的NuGet包文件夹(如果我理解正确的话):安装多个版本的PropertyChanged会破坏编译

在所有项目中重新安装Fody包也可以解决这个问题,但是将所有项目更改为相同的版本可能更容易。

我有一个项目遇到了这个问题:我的机器安装了Visual Studio 2017,但是我最近也为一个不相关的项目安装了Build Tools for Visual Studio 2019。看起来有些东西变得困惑了,因为卸载2019年的构建工具为我解决了这个问题。