找不到使用TFS 2012构建.net 3.5应用程序的csc错误cs0006元数据文件

问题描述 投票:32回答:8

我们正在从TFS 2008升级到TFS 2012.我们的大多数应用程序都是.net 3.5应用程序。 我们已经设置了TFS 2012环境并完成了迁移过程。当我们尝试构建.net 3.5应用程序时,我们收到错误:

csc error cs0006 metadata file could not be found........

如果我们使用.net 3.5应用程序,将其升级到.net 4.x,然后再次运行构建,它运行正常。

我无法升级迁移过程中的每个应用程序。我是否可能在迁移或构建框中缺少支持3.5的内容?

我在构建服务器上安装了VS 2008,2010,2012。我安装了.net框架等。

任何帮助都有帮助。

msbuild migration tfs2008 tfs2012
8个回答
15
投票

通过右键单击解决方案资源管理器中的项目并选择“项目依赖项”,可以在Visual Studio 2012中指定项目依赖项和项目构建顺序。通过执行此操作,您的解决方案文件将得到修复。在我的情况下,我能够解决此问题,而无需手动编辑解决方案文件。


7
投票

我们在分支之间切换这些问题(有重大变化)。当它发生时我推荐以下内容:

  • 关闭Visual Studio
  • 关闭w3wp.exe实例(偏执,只有当你通过本地IIS托管时)
  • 搜索并删除所有bin和obj文件夹
  • 从C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files清除所有中间JIT编译程序集

遵循这一套将做“清洁解决方案”应该做的事情,但事实并非如此。基本上我们试图删除任何在任何地方缓存的任何机会(这是这些问题的最常见原因)。

当然,您的里程可能会有所不同,但对于我们来说,120个项目和130万行代码重构会定期抛出这个问题,并且可靠地解决它。


6
投票

这似乎是由Visual Studio解决方案文件不包含项目依赖项的事实引起的。我发现我必须手动编辑解决方案文件以使用项目GUID设置依赖项。

例如,在我们的解决方案文件中,我们有这样的事情:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{61C9C7C3-B5B4-4C00-8AE0-B49D21B3D77C}"
EndProject

请注意,没有指定依赖项。它需要更像这样,其中指定的其他GUID是ProjectA所依赖的项目的GUID。

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{61C9C7C3-B5B4-4C00-8AE0-B49D21B3D77C}"
    ProjectSection(ProjectDependencies) = postProject
        {EB576061-5081-4ED5-9146-1B20C893E51E} = {EB576061-5081-4ED5-9146-1B20C893E51E}
        {A469F4BA-8BAA-4F14-BFC8-4D49F93C3E40} = {A469F4BA-8BAA-4F14-BFC8-4D49F93C3E40}
        {03FAB21D-C077-499B-9B19-67971791D369} = {03FAB21D-C077-499B-9B19-67971791D369}
        {F5E0C7B8-36AD-46B0-A74D-9C48516E208A} = {F5E0C7B8-36AD-46B0-A74D-9C48516E208A}
    EndProjectSection
EndProject

有关更多信息,请参阅此post


4
投票

在我的情况下,其中一个项目没有建设,但在错误中绝对没有提到它。经过几个小时拉我的头发和dropping some F bombs后,我终于仔细查看了输出并注意到有一个错误:

enter image description here

就是这样。我修好了它,并且所有错误都消失了。但我很好奇所以我把代码改回了编译失败的代码。我做了一个构建,现在我得到了友好的构建错误。由于某种原因,错误未显示。不明白为什么......


2
投票

我遇到了类似的问题。在我的情况下,我能够通过两个步骤解决它。首先,我使用Clean Solution选项清理了解决方案。然后在清理解决方案后,调试器检测到我安装了Microsoft.Aspnet.Mvc库的过期版本。所以我使用以下行通过Library控制台安装了新的:Install-Package Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________ Install-Package Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________


2
投票

我也有同样的错误。

修复是,检查路径。在我的路径中,一个文件夹的名称为abc%20ert。这来自于从git中同步空间。 Visual Studio在路径中的%20有问题。删除它解决了这个问题。


2
投票

检查每个项目=>属性屏幕中的目标框架版本。如果它低于参考项目或文件中使用的值,则会出现错误,因为编译器不知道如何处理更高版本的框架。 根据您的描述,您有一个以框架v4.0为目标的依赖项。 在您的项目构建之前,逐个更改依赖项目标框架。 如果它是第三方关闭源依赖项,请让它们提供.net 3.5目标。 没有解决方法。


1
投票

我在ASP.NET项目中使用C#7语言功能时遇到此错误,其中没有最新版本的NuGet包Microsoft.Net.Compilers,如Enabling c# 7 in a asp.net application中所述。

© www.soinside.com 2019 - 2024. All rights reserved.