40

We are upgrading from TFS 2008 to TFS 2012. Majority of our applications are .net 3.5 applications.
We have setup a TFS 2012 environment and went through migration process. When we attempt to build our .net 3.5 applications we are getting the error:

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

If we take a .net 3.5 application, upgrade it to .net 4.x, then run the build again, it works just fine.

I cannot upgrade every single application I have during this migration. Is there something I might be missing either in the migration or on my build box to support 3.5?

I have VS 2008, 2010, 2012 installed on my build server. I have .net frameworks installed, etc.

Any assistance is helpful.

4

11 回答 11

16

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

于 2014-06-12T03:06:06.270 回答
11

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

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

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

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

于 2017-03-09T02:10:32.960 回答
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

有关更多信息,请参阅此帖子

于 2013-07-04T16:53:17.463 回答
5

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

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

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


没有解决方法。

于 2018-09-05T19:53:56.383 回答
5

在我的情况下,其中一个项目没有建立,但在错误中绝对没有提到它。经过几个小时的拉扯头发并丢下一些 F 炸弹后,我终于仔细查看了输出,发现有一个错误:

在此处输入图像描述

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

于 2017-04-07T17:51:53.407 回答
4

我也有同样的错误。

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

于 2017-05-04T07:40:23.780 回答
2

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

于 2016-09-18T16:48:19.230 回答
1

在 ASP.NET 项目中使用 C# 7 语言功能时出现此错误,该项目没有最新版本的 NuGet 包Microsoft.Net.Compilers,如在asp.net 应用程序中启用 c# 7 中所述

于 2017-08-15T05:45:50.207 回答
1

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

此致。

于 2020-07-28T13:56:37.007 回答
0

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

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

于 2021-04-13T12:17:56.660 回答
0

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

于 2021-04-16T13:40:28.120 回答