全部,
我目前正在尝试创建一个可重复的过程,将 TFS 2008 安装升级到新硬件,微软称之为迁移升级,但在新硬件上构建 VS 2008 项目时遇到问题。
我们的 TFS 2008 安装由两台机器组成;一个包含 SQL 数据库和应用程序层,另一个用作专用的构建服务器。
我们的 TFS 2010 安装的新硬件由两台机器组成;其中包含 SQL 数据库、应用程序层、SharePoint 和 Reporting Services。
到目前为止,我已经成功地将必要的 TFS 数据库从原始服务器重复备份到新服务器并还原它们,然后使用“tfsconfig import”命令成功导入数据库并将其升级到团队项目集合。团队项目集合正确显示,并且可以立即使用。所有安全设置、搁置集、工作区等均完好无损。
当我们开始尝试构建解决方案时,我们的问题就开始了。我们最初尝试构建这些解决方案,但不将它们升级到 VS 2010 格式,也不修改任何项目的目标框架。
在构建各种项目时,我们会收到以下错误:
<文件名>.resx(x,y):错误 RG0000:找不到名称的类型。类型名称是 'System.Collections.Generic.List`1[[<class>, <assmnbly>, Version=abcd, Culture=neutral, PublicKeyToken=9557797252b44220]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'。行 x,位置 y。[<项目文件名>]
ResGen:错误 RG0000:无法加载引用的程序集“<文件名>.dll”。捕获 FileNotFoundException 说“无法加载文件或程序集 '<filename>.dll' 或其依赖项之一。系统找不到指定的文件。”。[<项目文件名>]
编译工作流相关项目时的各种“不明确”的 MSBuild 目标引用:
C:\Program Files (x86)\MSBuild\Microsoft\Windows Workflow Foundation\v3.5\Workflow.VisualBasic.Targets (153):“GeneratedCodeAttribute”在命名空间“System.CodeDom.Compiler”中不明确。
关于如何消除这些问题有各种建议,包括修改 ResGen 上的 32 位支持标志,或强制使用 64 位 ResGen,以及将项目升级到 VS 2010 格式并将其更改为目标 Framework 4。
问题 1.可以通过将有问题的项目更改为目标框架 4 来解决,但是由于兼容性问题,这个特定项目还不能升级,我还没有找到问题 2. 和 3 的解决方案。
我们有超过 20 个团队项目,每个项目都有多个分支,因此(由于涉及的工作量)希望避免手动更改所有项目/解决方案(特别是因为某些产品由于兼容性原因还不能升级到 Framework 4 ,并且在 Framework 4 MSBuild 中构建以 Framework 3.5 为目标的项目似乎不像微软让我们相信的那样兼容)。
如果有人有任何想法可能会有所帮助,请告诉我。
干杯,
安东尼
编辑:
问题 1 已被其他人看到,并且与引用自定义类型的通用列表的资源文件有关。事实证明,这些在我们的项目中是多余的,所以我只是删除了它们,而构建问题已成为历史。
问题 2 似乎自行消失了,可能是修复问题 1 的结果。
问题 3 与在 MSBuild 4 中构建 VS2008 工作流项目有关,当它们以 Framework 3.5 为目标时。微软,以其无限的智慧,显然选择不解决这个问题(链接到连接站点),并且有几个解决它的想法(参考框架的特定版本,更改构建工作流程以使用 MSBuild 3.5),没有一个哪个工作。
因此,我们对 2010 的升级似乎已暂停,直到我们为其构建 3.5 工作流(CRM 4.0 和 SharePoint 2007/2010)的产品支持 Framework 4,或者直到 Microsoft 解决了该问题。
编辑:
Microsoft 已承认存在问题,并已发布与上述 KB 编号相关的以下信息:http: //support.microsoft.com/kb/2023579