C#,TeamCity-避免TeamCity服务器上的构建后事件
我有许多项目,我已经将它们输出到我的开发环境中的DLL中央存储库中。这是通过在项目的生成后事件命令行中添加一个XCopy命令来实现的C#,TeamCity-避免TeamCity服务器上的构建后事件,c#,visual-studio-2010,teamcity,projects-and-solutions,C#,Visual Studio 2010,Teamcity,Projects And Solutions,我有许多项目,我已经将它们输出到我的开发环境中的DLL中央存储库中。这是通过在项目的生成后事件命令行中添加一个XCopy命令来实现的 XCOPY $(TargetDir)$(TargetFileName) C:\DEV\library /I /R /Y 我希望这种情况在开发模式下发生,但在TeamCity服务器上时,我希望避免执行脚本。这样做的最佳方式是什么?我将通过谷歌和文档进行搜索,但我希望其他人也以类似的方式使用TeamCity,并建议如何实现这一目标 谢谢 编辑: XCopy应该将dl
XCOPY $(TargetDir)$(TargetFileName) C:\DEV\library /I /R /Y
我希望这种情况在开发模式下发生,但在TeamCity服务器上时,我希望避免执行脚本。这样做的最佳方式是什么?我将通过谷歌和文档进行搜索,但我希望其他人也以类似的方式使用TeamCity,并建议如何实现这一目标
谢谢
编辑:
XCopy应该将dll复制到中心文件夹(C:\DEV\library)中,依赖于dll的外围项目可以访问该文件夹。事实上,我已经从项目中删除了xcopy,因为我觉得使用它更像是一种黑客行为,而不是一种帮助。感觉就像我把一个方形的钉子塞进了一个圆孔。你可以用自己的程序替换“xcopy”,比如说myXCopy
myXCopy可以检查环境变量以决定是否应该进行复制。
然后可以控制何时设置此环境变量 或 编写自己的MsBuild任务来执行复制。
将任务挂接到标准编译任务的末尾
使teamcity传入自定义任务检查的MsBuild变量您可以在生成配置或生成代理配置中定义环境变量,并仅在变量未按此处所述设置时触发copy命令:据我所知,您正在使用XCopy将生成输出复制到外部文件夹,以便相关解决方案可以将输出用作程序集引用。您已经正确地发现使用构建后事件和XCopy是错误的,因为它开始给您带来痛苦。我们在API解决方案中也有类似的目标,我将尝试描述我们用我们的解决方案所做的事情,但请记住,没有银弹,有时仍然需要妥协 项目结构 项目结构不是VisualStudio中的结构,而是如何组织项目所需的源、库和其他外部项,此模式可以应用于大多数语言。项目结构应干净、易于理解,并且在所有项目之间保持一致。我使用的结构与许多开源项目一致,通常包括以下内容
- root
|-- bin
|-- build
|-- lib
|-- src
|-- tools
- 根目录-根目录应包含尽可能少的项目
- bin-bin是生成的输出应该放在的地方。这可能只在您有多个输出时才相关,如果您只有一个输出,例如web项目,它可以保持在原来的位置。我没有发现使用调试和发布版本的子文件夹的理由
- 生成-包含生成文件,如用于生成源代码、运行测试、代码覆盖率、代码分析、文档等的MSBuild或NAnt脚本
- lib-包含项目输出所依赖的所有外部或内部第三方库。我通常为每个库使用子文件夹,但我不确定是否真的需要
- src-包含在所选IDE中打开项目、编辑、生成和运行所需的所有文件。尽量保持这里的结构尽可能平坦,没有必要让它变得太复杂,因为其他开发人员不可能像您那样有条不紊,最终您会将项目放在错误的文件夹中。我所做的最多就是为所有测试创建一个测试文件夹,但即使这样也不是必需的
- 工具-它包含生成所依赖的所有应用程序、程序集和外部文件,但源不应依赖于其中任何一个,因为它的依赖关系是库