【问题标题】:MSBuild error: "Could not resolve this reference. Could not locate the assembly..."MSBuild 错误:“无法解析此引用。无法找到程序集...”
【发布时间】:2017-11-30 09:41:54
【问题描述】:

我知道已经有一个问题 here 询问完全相同的错误消息,但不幸的是,接受的答案对我不起作用。

今天早上早些时候我能够成功构建我当前的解决方案,但在大约 15 分钟前构建突然开始失败,并显示以下错误消息:

C:\程序文件 (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): 警告 MSB3245:无法解析此引用。找不到 程序集“MyAssembly.dll”。检查以确保程序集存在 在磁盘上。如果您的代码需要此参考,您可能会得到 编译错误。

不幸的是,我的代码需要这个 DLL。因为无法定位,所以我的解决方案无法编译。

我已经尝试清理然后再次构建我的解决方案,但这没有用。

我注意到该引用旁边有一个黄色图标,因此我删除了该引用,然后从.csproj 文件中<HintPath> 标记内指定的完全相同的位置再次添加它。 (位置是\bin\Debug 文件夹。)黄色图标随即消失。

但是,立即在我点击“构建解决方案”(Debug 模式)后,黄色图标再次出现,我再次看到相同的 MSBuild 错误消息,通知我找不到 DLL。

我该如何解决这个问题?

【问题讨论】:

    标签: .net visual-studio-2015 msbuild


    【解决方案1】:

    添加对MyAssembly 项目的项目引用,而不是对编译输出的引用。右键单击需要MyAssembly.dll的项目的References节点,进入“添加引用”,然后选择“解决方案”:


    假设您有两个项目(X 和 Y),其中 Y 取决于 X。Visual Studio 将首先构建 X,然后是 Y。

    您可以通过以下两种方式之一在 Y 中添加对 X 的引用:

    • 在解决方案中引用项目
    • 引用\bin\Debug文件夹中的编译输出

    如果引用是解决方案中的项目,那么 Visual Studio 将知道编译项目的顺序(在我们的示例中是 X,然后是 Y)。

    如果引用的是\bin\Debug中的输出,那么Visual Studio将不知道编译程序集的顺序,并且可以尝试在X之前编译Y,在\bin\Debug中找不到文件,并且不编译.

    【讨论】:

    • 我的问题被深埋了 3 层。这个答案帮我找到了。
    【解决方案2】:

    同样的问题,不同的解决方案:

    我的解决方案由一个 dll 项目和一个 exe 测试项目组成。 VS以某种方式将启动项目更改为dll。 右键单击您的解决方案, 选择属性, 检查启动项目和项目依赖项设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多