我正在尝试使用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中更改任何内容。
答案 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