当我尝试构建一个C#控制台应用程序(可能还有其他)时,它似乎TargetFrameworkDirectories设置不正确; 特别是它省略了Facades目录.
由于我一直试图诊断问题一段时间,这里列出了可能相关的事实.
warning MSB3267: The primary reference "System.Runtime", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5".在msbuild执行期间发生此问题ResolveAssemblyReferenceTargetFrameworkDirectories(参数ResolveAssemblyReference)C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\但是在坏机器上它缺少第二个条目(Facades目录)扫描好的和坏的msbuild日志文件会出现以下差异:
AssignProjectConfiguration在错误的构建中跳过目标,但在良好的构建中运行GetInstalledSDKLocations好的构建中跳过了许多目标,但在构建不好的情况下没有提到ResolveAssemblyReference任务传递Assemblies用Implicit=true的好身材,但不是在恶劣的构建.ResolveAssemblyReference任务传递任务参数TargetFrameworkDirectories与C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\在恶劣的身材,但好建外立面目录(见上文)的第二项.因为这是由C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets我在好坏机器上分析该文件所驱动的.它们包含许多差异.第一个区别是项目元素(第17行),它TreatAsLocalProperty="OutDir"在良好的机器上有一个额外的属性.在良好的机器上,目标文件包含更多注释,例如<!-- VS10 without SP1 and without VS11 will not have VisualStudioVersion set, so do that here -->.跳转至AssignProjectConfiguration目标,良好的机器有Condition="'$(CurrentSolutionConfigurationContents)' != '' or '@(ProjectReference)'!=''",而坏的机器有Condition="'@(ProjectReference)'!=''"(我假设解释了为什么它被跳过).
我尝试的最后一件事是修复"Microsoft .NET Framework 4.5"和"Microsoft .NET Framework 4.5 Multi-Targeting Pack".它没有帮助.
任何建议将不胜感激,特别是如果我可以避免重新安装Visual Studio 2012!
更新:似乎重新安装.NET 4.5后面"仅"修复VS2012解决了我的问题.我最好的猜测是什么导致了这个问题,不知何故我的Microsoft.Common.targets被改为旧版本.我不知道什么可以改变目标文件.
正如 @leppie 所建议的,这是一个 .NET 问题。由于某种原因,修复 .NET 似乎并没有解决问题。然而,重新安装 .NET 4.5(然后修复 VS2012)似乎确实解决了这个问题。
| 归档时间: |
|
| 查看次数: |
1508 次 |
| 最近记录: |