【问题标题】:Can't build in visual studio 2015 because 'Microsoft.Build.Tasks.v14.0.dll' cannot be found无法在 Visual Studio 2015 中构建,因为找不到“Microsoft.Build.Tasks.v14.0.dll”
【发布时间】:2015-10-21 18:11:21
【问题描述】:

尝试在 Visual Studio 2015 中构建时,缺少以下文件?该项目之前是在 VS2013 中构建的。

严重性代码描述项目文件行错误任务工厂 无法从程序集“C:\Program”加载“CodeTaskFactory” 文件 (x86)\MSBuild\14.0\bin\Microsoft.Build.Tasks.v14.0.dll"。可以 不加载文件或程序集 'file:///C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Build.Tasks.v14.0.dll' 或其之一 依赖关系。该系统找不到指定的文件。

【问题讨论】:

  • 尝试删除并再次添加引用可能会对您有所帮助。
  • 更新 NuGet 包对我有帮助
  • 确保您在 VS 单个组件中选择了 Windows Workflow Foundation,这就是我解决问题的方法。见下同,johnlouros.com/blog/…

标签: c# msbuild visual-studio-2015


【解决方案1】:

在我的情况下,这是 SFML.NET nuget 包的问题。

它依赖于过时的 Nuget Baseclass.Contrib.Nuget.Output 组件,这就是构建失败的原因。

在我手动更新到 .Net 4.6 后,从项目文件中删除了所有 nuget 人员,并从项目中删除了其文件并再次读取了所有依赖项 Baseclass.Contrib.Nuget.Output 的版本已更改,viola!

【讨论】:

  • Baseclass.Contrib.Nuget.Output 也是我的问题的原因。只需更新就足以修复它。
  • 这里也一样。刚刚在 Nuget 中更新了包并且构建很好。
  • @Kris McGinnes,添加您的评论作为答案,我会支持它。它解决了我的问题,显然 GeoffCoope 也解决了。
  • 谢谢@RichardII。随意对我的评论进行投票,但我认为这不需要一个全新的答案。这与 drweb86 的答案太相似了。
  • 正如 Kris McGinnes 所说,Baseclass.Contrib.Nuget.Output,对我来说是 GeckoFX 网络浏览器组件附带的。
【解决方案2】:

程序集已重命名。将 CodeTaskFactory MSBuild 任务的 AssemblyFile 参数更改为...(在您的错误中应该有一个目标文件名,该任务所在的位置)

AssemblyFile="C:\Program Files (x86)\MSBuild\14.0\Bin\Microsoft.Build.Tasks.Core.dll"

可能有人试图变得聪明并使用这样的 MSBuild 属性..(这不适用于 MSBuild 14,但适用于 12)...

AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll"

仅供参考...还有一些其他的,例如 Microsoft.Build.Utilities.v12.0.dll 已重命名为 Microsoft.Build.Utilities.Core.dll

【讨论】:

  • 我在通过 Nuget 安装软件包后看到了这个错误。为了解决这个问题,我编辑了包文件夹下的 .targets 文件,如 Gary 的回答中所述。我只是想指出,需要编辑的位置可能不会从错误中明显看出,特别是如果原因是最近的软件包安装。
  • 为什么C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\CodeAnalysis\Microsoft.CodeAnalysis.Targets 引用$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll?当 ToolsVersion 为 14.0 时,这肯定会失败吗?
  • 我在 Windows 10 机器上使用 Visual Studio Community Edition 2015 尝试运行 Yahoo Yui Compressor 构建的任务时遇到了这个问题。我必须更新 ls.pubignore.wpp.targets 以将 v$(MSBuildingToolsVersion) 替换为 Core 我在开头留下了 $(MSBuildingToolsPath)。
  • 如果程序集在我们不拥有的 dll 中出现问题,我们该怎么办?
  • @BobBlack,这个包文件夹通常在哪里?
【解决方案3】:

我只需要重新启动 Visual Studio 就足够了。

我怀疑我之前已经杀死了我的所有 MSBuild.exe 进程做其他事情,并且没有任何 MSBuild.exe 进程会导致错误。

【讨论】:

    【解决方案4】:

    就我而言,我从根目录中删除了“ls.pubignore.wpp.targets”文件。它消除了错误。 :)

    【讨论】:

      【解决方案5】:

      根据 Gary 的回答,我将其参数化如下:

      <Choose>
        <When Condition="'$(MSBuildToolsVersion)'=='14.0'">
          <PropertyGroup>
            <TasksAssemblyName>Microsoft.Build.Tasks.Core</TasksAssemblyName>
          </PropertyGroup>
        </When>
        <Otherwise>
          <PropertyGroup>
            <TasksAssemblyName>Microsoft.Build.Tasks.v$(MSBuildToolsVersion)</TasksAssemblyName>
          </PropertyGroup>
        </Otherwise>
      </Choose>
      <UsingTask TaskName="SecondsSinceEpoch" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\$(TasksAssemblyName).dll">
      

      【讨论】:

      • MSBuildToolsVersion 晚于 '14.0' 的位置呢?您的情况不是面向未来的,并且将恢复为以后版本的先前命名约定。您应该检查MSBuildToolsVersion 是否大于“14.0”,但我不确定这是一项微不足道的任务,因为您正在处理字符串。最好将更改假设为重大更改并升级旧版本上的任何构建服务器/代理。
      【解决方案6】:

      在我的情况下,我遇到了同样的问题 我在 VS2015 中从 NuGet 包管理器更新了一些包,然后尝试在另一台未安装 vs2015 的机器上打开 vs2013 中的相同解决方案。

      安装 Microsoft Build Tools 2015 已解决该错误。这会将 Microsoft.Build.Utilities.Core.dll 添加到 GAC,我认为这就是它的工作原理。

      https://www.microsoft.com/en-in/download/details.aspx?id=48159

      【讨论】:

        【解决方案7】:

        使用 Visual Studio 2017 帮助我的是复制 Microsoft.Build.Tasks.Core.dll 并将其重命名为 Microsoft.Build.Tasks.v15.0.dll

        【讨论】:

        • 它对我有用。但真正的问题应该是:为什么我必须这样做?
        • 对我没有帮助。
        • 重命名 dll 仅在重新启动 Visual Studio 后才对我有用
        【解决方案8】:

        我的解决方案:从“*.csproj”文件中删除两行:

        <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
        <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
        

        【讨论】:

          【解决方案9】:

          我第一次重新启动视觉工作室,为我工作

          我第二次再次收到此错误并且我确实更新了:

          Install-Package Baseclass.Contrib.Nuget.Output -Version 2.2.0-xbuild02

          【讨论】:

          • 不确定它为什么起作用,或者它在做什么。 OP你能详细说明吗?
          【解决方案10】:

          对于 Visual Studio 2017,这对我有用,它混合了两种提供的解决方案。两者都没有单独工作,所以这就是我将其作为新答案提交的原因。

          在文件C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\CodeAnalysis\Microsoft.CodeAnalysis.Targets

          AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll"&gt; 替换为AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"&gt;

          然后将文件C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Build.Tasks.Core.dll复制到同一个文件夹中,名称为Microsoft.Build.Tasks.v15.0.dll

          【讨论】:

            【解决方案11】:

            对我来说,我正在从使用 msbuild 构建我们的解决方案转换为使用 dotnet build。从 codedom 2.0.1 -> 3.6.0 更新允许构建解决方案。

            【讨论】:

              【解决方案12】:

              从 nuget 包更新“Microsoft.CodeDom.Providers.DotNetCompilerPlatform”,它解决了我的错误,这是最好的解决方案,经过多次尝试我找到了解决方案

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2017-03-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-01-14
                • 2019-06-20
                相关资源
                最近更新 更多