【问题标题】:Fody looks for intermediate files in the wrong directoryFody 在错误的目录中查找中间文件
【发布时间】:2016-07-19 16:20:15
【问题描述】:

为了能够发布单个 .exe,我已将 Costura/Fody 包添加到我的 C# 项目中。我以前使用过这个包,但现在我收到以下错误消息:

MSBUILD:错误:Fody:AssemblyPath “C:\Projects\X\MSBuild\obj\x86\Debug\X.exe”不存在。如果你 还没有构建你可以忽略这个错误。 完成 Fody 4 毫秒。

奇怪的是,中间 X.exe 是在这里正确构建的:

C:\Projects\X\src\X\obj\x86\Debug\X.exe

我正在进行的项目相当大。因此,我们使用几个 MSBuild 道具文件将所有内容放在 corect 输出目录中。使用 MSBuild 从命令行构建和在 Visual Studio 中构建都可以正常工作。所以我假设我们的道具文件是正确的。为什么 Fody 会在这样一个奇怪的地方寻找中介?

Fody 可能使用哪个 MSBuild 变量控制此中间路径?

【问题讨论】:

  • 文件夹或文件权限?
  • 我不这么认为。 MSBuild 可以访问所有这些文件和文件夹(它创建了它们),而 Fody 只是 MSBuild 执行的一个组件。

标签: c# msbuild fody


【解决方案1】:

查看引发异常的the code,我看到了一个非常简单的 File.Exists 检查。这一切都源于 ProjectDirectory(在 WeavingTask 中),您可以检查使用该值的位置here

由于我没有使用过 Fody,我不能告诉你更多。我会特别注意配置文件,因为我没有看到 ProjectDirectory 在任何地方构建,只是从某个地方注入。

【讨论】:

  • 谢谢!我没有想到查看源代码。不知何故,Fody 使用了一个非常奇怪的 obj 目录。我通过更改我们的构建脚本以强制 obj 目录正常运行来解决此问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
相关资源
最近更新 更多