.net - MSBuild 错误 : "Could not resolve this reference. Could not locate the assembly..."

标签 .net visual-studio-2015 msbuild

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

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

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "MyAssembly.dll". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.



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

我曾尝试清理,然后再次构建我的解决方案,但那毫无用处。

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

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

我该如何解决这个问题?

最佳答案

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

Solution reference

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

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

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

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

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

    关于.net - MSBuild 错误 : "Could not resolve this reference. Could not locate the assembly...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47570226/

    相关文章:

    c# - 如何在播放时比较 MediaElement 的准确位置

    c# - 使用带有 ISO-8859-1 编码的 XmlTextWriter 编写 XML 文件

    c# - 将 AutoCAD/Solidworks 图纸/对象导入 winforms?

    .net - 创建 clickonce webdeploy 包

    c# - 命令行 MSBuild 无法编译代码

    .NET 泛型类型约束不等式

    .net - Assembly::GetExecutingAssembly()->Location 现在抛出 ArgumentException:路径中存在非法字符

    rest - Visual Studio 无法在我的 rest api 客户端中添加 swagger 元数据文件

    c++ - 如何用 natvis 可视化一个简单的 std::string?

    msbuild - 解释 MSBuild 输出数字