无法在Visual Studio 2015中构建,因为找不到“Microsoft.Build.Tasks.v14.0.dll”

时间:2015-07-30 11:43:46

标签: c# msbuild visual-studio-2015

尝试在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'或其中一个   依赖。该系统找不到指定的文件。

12 个答案:

答案 0 :(得分:57)

程序集已重命名。更改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"

只是fyi ...还有一些其他人,例如Microsoft.Build.Utilities.v12.0.dll已重命名为Microsoft.Build.Utilities.Core.dll

答案 1 :(得分:21)

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

答案 2 :(得分:18)

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

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

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

答案 3 :(得分:7)

我第一次重启visual studio,为我工作

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

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

答案 4 :(得分:6)

只需重新启动Visual Studio即可。

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

答案 5 :(得分:4)

根据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">

答案 6 :(得分:2)

我的解决方案:从“* .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')" />

答案 7 :(得分:1)

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

答案 8 :(得分:1)

在我的情况下,我遇到了同样的问题 我在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

答案 9 :(得分:0)

对于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">替换为AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

enter image description here