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

时间:2013-01-23 22:04:42

标签: msbuild migration tfs2008 tfs2012

我们正在从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框架等。

任何帮助都有帮助。

11 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:7)

我们在分支之间切换这些问题(有重大变化)。如果发生这种情况,我建议如下:

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

遵循这一套将做什么"清洁解决方案"应该做,但不是。基本上我们正试图消除任何在任何地方缓存的任何机会(这是导致这些问题的最常见原因)。

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

答案 2 :(得分: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

答案 3 :(得分:4)

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

enter image description here

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我也有同样的错误。

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

在每个项目=>属性屏幕中检查目标框架版本。如果它低于参考项目或参考文件中使用的框架,则会出现错误,因为编译器不知道如何处理更高版本的框架。
根据您的描述,您具有一个以框架v4.0为目标的依赖项。

逐一更改依赖关系目标框架,直到构建项目为止。

如果是第三方封闭源代码依赖项,请要求他们为其提供.net 3.5目标。


没有解决方法。

答案 8 :(得分:0)

我遇到了一个涉及多个项目的解决方案。 问题是有不同的Framework版本。 我的WEB项目是4.5,并且有一个使用4.7.2版本的PDF Helper。 对齐所有版本后,我清理了解决方案,编译正常。

最诚挚的问候。

答案 9 :(得分:0)

在一个项目中的分支之间切换后发生了这种情况,这些分支之间存在显着差异,我尝试了网络上的所有解决方案,但都没有奏效。

最后,我不得不删除我的本地项目文件并再次从 GitHub 存储库中克隆该项目,之后当我启动该项目时,项目构建没有错误。

答案 10 :(得分:0)

就我而言,我在依赖项目中出错。这就是未构建依赖项目并且缺少 DLL 的原因。我必须先解决依赖项目中的其他错误,然后错误 CS0006 消失了。