14

** 这是 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:

此外,据称该错误发生在第 50 行的“Fody.targets”内,即

<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 的开发人员能看到这一点,因为在解决此问题之前,我们处于绝对停滞状态。我们不能“恢复”到它工作的时候,因为当前的配置是它工作的时候。

4

6 回答 6

16

看起来你的错误实际上是在找到一个名为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");

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

于 2015-10-02T03:31:29.160 回答
5

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

git clean -xdf
于 2017-09-28T21:36:13.130 回答
2

在尝试了我在互联网上可以找到的所有解决方案后,以下方法对我有用:

  1. 关闭 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.
于 2017-08-18T19:50:57.343 回答
1

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

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

于 2017-07-24T09:28:28.220 回答
1

要调试此类问题,您可以使用SysInternals Process Monitor

一般的做法是:

  1. 运行进程监视器
  2. 应用过滤器仅监控您的应用程序
  3. 重现问题
  4. 寻找丢失的 DLL。这部分有点棘手,因为

    1. 可能多次找不到 DLL(“找不到路径”)
    2. 但最终被找到(“成功”)
    3. 它可能不是您要查找的 DLL,而是该 DLL 的依赖项

    所以你需要找到一个从未找到的DLL 。并且您不希望未找到但随后在后续尝试中找到的 DLL。

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

  1. 运行进程监视器
  2. 应用过滤器仅监控您的应用程序
  3. 重现问题
  4. 将结果保存为 XML(保留所有项目,“找不到路径”和“成功”)
  5. 在日志分析器中打开 XML
  6. 从上到下,检查 DLL 的存在。该工具将仅显示从未找到的 DLL。

免责声明:我是该免费工具的作者,如果文本中没有明确说明的话。

于 2015-10-01T20:05:51.110 回答
0

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

于 2021-01-20T09:07:07.790 回答