在visual studio online tfs build上缺少Microsoft.Build.Tasks.v4.0.dll

时间:2013-12-14 19:41:11

标签: tfs azure-devops

我正在尝试使用visual studio在线构建我的项目。

我收到以下错误。

C:\a\src\.nuget\nuget.targets (71): The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Build.Tasks.v4.0.dll". Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Build.Tasks.v4.0.dll' or one of its dependencies. The system cannot find the file specified.

这来自我解决方案中的nuget.targets文件。

  <UsingTask TaskName="SetEnvironmentVariable" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
        <ParameterGroup>
            <EnvKey ParameterType="System.String" Required="true" />
            <EnvValue ParameterType="System.String" Required="true" />
        </ParameterGroup>
        <Task>
            <Using Namespace="System" />
            <Code Type="Fragment" Language="cs">
                <![CDATA[
                try {
                    Environment.SetEnvironmentVariable(EnvKey, EnvValue, System.EnvironmentVariableTarget.Process);
                }
                catch  {
                }
            ]]>
            </Code>
        </Task>
    </UsingTask>

我已将nuget.exe更新为最新版本,并且未在nuget.targets中更改任何内容。

2 个答案:

答案 0 :(得分:12)

问题是解决方案中的某些类库具有默认值:

ToolsVersion="12.0"

将其更改为

ToolsVersion="4.0"

使其在TFS在线工作

答案 1 :(得分:4)

我将项目升级到.NET 4.5.2后遇到了这个问题。似乎是.NET 4.5版本与旧的NuGet包恢复方式之间的冲突(MSBuild集成包恢复与自动包恢复)。

我能够通过将NuGet迁移到新的包恢复方式来解决问题:http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

更多信息:http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html