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

Msbuild 在使用TFS 2012构建.net 3.5应用程序时,找不到csc错误cs0006元数据文件,msbuild,migration,Msbuild,Migration,我们正在从2008年TFS升级到2012年TFS。我们的大多数应用程序都是.net 3.5应用程序。 我们已经设置了TFS 2012环境并完成了迁移过程。当我们尝试构建.net 3.5应用程序时,会出现以下错误: csc error cs0006 metadata file could not be found........ 如果我们使用.NET3.5应用程序,将其升级到.NET4.x,然后再次运行构建,它就可以正常工作 我无法在此迁移过程中升级所有应用程序。在支持3.5的迁移或构建框中是否

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

csc error cs0006 metadata file could not be found........
如果我们使用.NET3.5应用程序,将其升级到.NET4.x,然后再次运行构建,它就可以正常工作

我无法在此迁移过程中升级所有应用程序。在支持3.5的迁移或构建框中是否有我可能缺少的东西

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


任何帮助都是有帮助的。

这似乎是因为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

有关详细信息,请参见此部分。

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

我也遇到了类似的问题。在我的例子中,我可以通过两个步骤来解决它。首先,我使用cleansolution选项清洗了溶液。然后,在清理解决方案后,调试器检测到我安装了Microsoft.Aspnet.Mvc库的过时版本。因此,我通过库控制台使用以下行安装了新的: 安装软件包Microsoft.Aspnet.Mvc-版本5.2.3.0-项目名称_____________
安装包Microsoft.Aspnet.Mvc-version 5.2.3.0-projectname\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。发生这种情况时,我建议如下:

  • 关闭Visual Studio
  • 关闭w3wp.exe实例(偏执狂,仅当您通过本地IIS托管时)
  • 搜索并删除所有bin和obj文件夹
  • 从C:\Windows\Microsoft.NET\Framework64\v4.0.30319\临时ASP.NET文件中清除所有中间JIT编译的程序集\
遵循这组规则可以做“清洁溶液”应该做的事情,但不能。从本质上讲,我们试图消除任何东西被缓存到任何地方的可能性(这是这些问题最常见的原因)


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

在我的案例中,有一个项目没有构建,但在错误中绝对没有提到它。经过几个小时的拉扯头发和,我终于仔细查看了输出,发现有一个错误:


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

我也有同样的错误


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

我在ASP.NET项目中使用C#7语言功能时遇到此错误,该项目没有最新版本的NuGet package
Microsoft.NET.Compilers
,如中所述。

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

逐个更改目标框架的依赖项,直到项目生成。

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


没有解决办法。

我在涉及多个项目的解决方案中遇到了这个问题。 问题是有不同的框架版本。 我的WEB项目是4.5,有一个PDF助手使用4.7.2版本。 在我对齐了所有版本之后,我清理了解决方案,编译就顺利进行了


致以最诚挚的问候。

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


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

在我的案例中,我在dependent project中出现了错误。这就是为什么没有生成依赖项目,并且缺少DLL的原因。我必须先解决依赖项目中的其他错误,然后错误CS0006消失。

我右键单击解决方案并选择“查看项目依赖项”。不知道它做了什么,但当我关闭出现的对话框时,它工作了!在走这条路线之前,请尝试有关项目依赖关系的答案(目前在下面),这样做要困难得多。谢谢,在尝试了这么多其他解决方案之后,这一点起了作用-在我的例子中,我添加了项目引用,这导致项目依赖关系屏幕显示正确的依赖项勾选,但是当我查看解决方案文件时,您说没有列出实际的依赖项。当我手动添加