Build Teamcity和注册dll

Build Teamcity和注册dll,build,teamcity,Build,Teamcity,我正在尝试使用TeamCity Professional 6.5.2构建一个项目 我有一个使用Visual foxpro dll的MVC Visual Studio 2010项目。 由于未注册dll,生成失败。 作为构建过程的一部分,如何在构建机器中注册该dll 谢谢 在生成代理计算机上注册所有DLL是个坏主意,例如,有时您会发现必须在生成代理计算机上安装Visual Studio;) 我建议将这些库和您的代码库一起放在源代码管理系统中(我假设您正在使用它),并通过声明一个MSBUild属性来引

我正在尝试使用TeamCity Professional 6.5.2构建一个项目 我有一个使用Visual foxpro dll的MVC Visual Studio 2010项目。 由于未注册dll,生成失败。 作为构建过程的一部分,如何在构建机器中注册该dll


谢谢

在生成代理计算机上注册所有DLL是个坏主意,例如,有时您会发现必须在生成代理计算机上安装Visual Studio;)

我建议将这些库和您的代码库一起放在源代码管理系统中(我假设您正在使用它),并通过声明一个MSBUild属性来引用lib的文件夹,如


$(PathFromCommandLine或JustHardCodedPath)
然后,在执行生成/编译之前,只需使用标准的MSBuild命令通过指定源文件和目标文件将文件从$(LibFolder)复制到生成$(OutputFolder)中即可

要强制TeamCity从VCS文件夹中拾取库(DLL)文件,只需将路径映射添加到:

TeamCity Configuration Settings -> Edit Build Configuration -> VCS Root settings -> Client Mapping
编辑:

在您的情况下,看起来您有一个集成测试,它依赖于您需要启动的外部COm服务器,所以您可以通过编程注册这个DLL,例如在TestSetup中,然后不要忘记在test TearDown中注销它。 无论如何,您必须引用此DLL作为
VS项目->添加现有项目->添加为链接
+设置
Copy to Output Directory->Copy if newer


如何注册COM dll:请参见

在生成代理计算机上注册所有dll是个坏主意,例如,有时您会发现必须在生成代理计算机上安装Visual Studio;)

我建议将这些库和您的代码库一起放在源代码管理系统中(我假设您正在使用它),并通过声明一个MSBUild属性来引用lib的文件夹,如


$(PathFromCommandLine或JustHardCodedPath)
然后,在执行生成/编译之前,只需使用标准的MSBuild命令通过指定源文件和目标文件将文件从$(LibFolder)复制到生成$(OutputFolder)中即可

要强制TeamCity从VCS文件夹中拾取库(DLL)文件,只需将路径映射添加到:

TeamCity Configuration Settings -> Edit Build Configuration -> VCS Root settings -> Client Mapping
编辑:

在您的情况下,看起来您有一个集成测试,它依赖于您需要启动的外部COm服务器,所以您可以通过编程注册这个DLL,例如在TestSetup中,然后不要忘记在test TearDown中注销它。 无论如何,您必须引用此DLL作为
VS项目->添加现有项目->添加为链接
+设置
Copy to Output Directory->Copy if newer


如何注册COM dll:请参阅

在每台计算机(开发、构建、生产)上安装程序集将使将来的更新和任何连续集成系统都难以维护

最好在您的工作目录(我称之为“资源”)中创建一个文件夹,其中包含每组DLL的文件夹。然后每次都直接从项目引用程序集。您可以在不同的项目中获得重复的DLL,但它可以使一切都非常干净和简单


在Visual Studio 2010中,您可以下载一个名为NuGut的小实用程序,我相信它有助于以更好的方式管理程序集。

在每台机器(开发、构建、生产)上安装程序集将使将来的更新和任何连续集成系统都难以在将来维护

最好在您的工作目录(我称之为“资源”)中创建一个文件夹,其中包含每组DLL的文件夹。然后每次都直接从项目引用程序集。您可以在不同的项目中获得重复的DLL,但它可以使一切都非常干净和简单


在Visual Studio 2010中,您可以下载一个名为NuGut的小实用程序,我相信它有助于以更好的方式管理程序集。

Rodrigo有两种不同的场景,您的场景将分为以下两种:

项目可以引用的程序集:只要有可能,请在源代码管理存储库(the)中包括依赖程序集,通常位于必要项目引用的“libs”文件夹中。这集中了您所有的依赖关系,使新开发人员易于入门,并解决了您的TeamCity构建问题


需要安装GAC的程序集:有时只需将程序集安装在GAC中(即RightFax)。坦白地说,在这种情况下最简单的事情就是在GAC中安装这个该死的东西。这是一个例外,虽然有些人会从哲学上反对它,但替代方案可能会变得有点复杂(即,作为构建的一部分,自动化安装),为了钱,我宁愿将时间投资到其他地方。

罗德里戈有两种不同的场景,您的场景将分为以下其中一种:

项目可以引用的程序集:只要有可能,请在源代码管理存储库(the)中包括依赖程序集,通常位于必要项目引用的“libs”文件夹中。这集中了您所有的依赖关系,使新开发人员易于入门,并解决了您的TeamCity构建问题


需要安装GAC的程序集:有时只需将程序集安装在GAC中(即RightFax)。坦白地说,在这种情况下最简单的事情就是在GAC中安装这个该死的东西。这是一个例外,虽然有些人会从哲学上反对它,但替代方案可能会变得有点复杂(即,作为构建的一部分自动安装),为了钱,我宁愿将时间投资到其他地方。

最后,我在Visual Studio中添加了一个运行regsvr32命令的预构建事件。dll位于已知位置,因此我以这种方式引用: regsvr32/s$(SolutionDir)Lib\ProjDataAcc