【问题标题】:csc error cs0006 metadata file could not be found building a .net 3.5 application with TFS 2012csc 错误 cs0006 元数据文件找不到使用 TFS 2012 构建 .net 3.5 应用程序
【发布时间】:2013-01-07 13:17:48
【问题描述】:

我们正在从 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


【解决方案1】:

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

【讨论】:

  • 我只是右键单击解决方案并选择“查看项目依赖项”。不知道它做了什么,但是当我关闭出现的对话框时它起作用了!
【解决方案2】:

我们在分支之间切换时遇到了这些问题(有重大变化)。当它发生时,我建议如下:

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

遵循这一套将做“清洁解决方案”应该做的事情,但不会。从本质上讲,我们试图消除任何在任何地方缓存任何东西的机会(这是这些问题的最常见原因)。

当然,您的工作量可能会有所不同,但对于拥有 120 个项目和 130 万行代码重构的我们来说,经常会抛出此问题并可靠地解决它。

【讨论】:

    【解决方案3】:

    这似乎是由于 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 了解更多信息。

    【讨论】:

    • 在走这条路之前尝试一下关于项目依赖关系的答案(目前在下面),这样做要困难得多。
    • 谢谢,在尝试了这么多其他解决方案之后,这有效 - 在我的情况下,我添加了项目引用,这导致项目依赖项屏幕显示正确的依赖项,但是当我查看时您说没有列出实际依赖项的解决方案文件。当我手动将它们添加到解决方案文件时,构建开始工作。我后来发现,如果我删除了项目引用,按照@Vasudevan-Kannan 的建议勾选了 GUI 中的依赖项,并重新添加了它也有效的项目引用(但你的方法帮助我找到了实际问题)
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      逐一更改依赖项目标框架,直到您的项目构建。

      如果是第 3 方闭源依赖,请要求他们提供 .net 3.5 目标。


      没有解决方法。

      【讨论】:

        【解决方案6】:

        我也遇到了同样的错误。

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

        【讨论】:

        • 我遇到了类似的问题。我将一个解决方案解压缩成一个带有空格的路径。读取输出我可以看到 VS 只能看到从路径中最后一个空格后的第一个单词开始的路径。删除空格解决了问题
        • 我也遇到了同样的问题,在我从 AzureDevops 存储库克隆它之后,它为空格添加了 %20。弄清楚这一点非常烦人。
        【解决方案7】:

        我遇到了类似的问题。就我而言,我能够通过 2 个步骤解决它。首先,我使用“清洁解决方案”选项清洁了解决方案。然后在清理解决方案后,调试器检测到我安装了 Microsoft.Aspnet.Mvc 库的过时版本。因此,我使用以下行通过库控制台安装了新的: 安装包 Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________ 安装包 Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________

        【讨论】:

        • 就我而言,只是清理解决方案有帮助(VS2015)。
        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

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

          最好的问候。

          【讨论】:

            【解决方案10】:

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

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

            【讨论】:

              【解决方案11】:

              在我的情况下,我在依赖项目中遇到了错误。这就是为什么没有构建依赖项目并且缺少 DLL 的原因。我必须先解决依赖项目中的其他错误,然后错误 CS0006 消失了。

              【讨论】:

                猜你喜欢
                • 2018-11-14
                • 2015-11-22
                • 1970-01-01
                • 1970-01-01
                • 2017-01-29
                • 2021-04-08
                • 2017-06-01
                • 1970-01-01
                • 2011-04-07
                相关资源
                最近更新 更多