在我的上一个项目中,我们使用MSBuild作为脚本语言.(是的,真的!)我们还编写了数百个自定义MSBuild任务,用于在C#中更有意义的部分.(我甚至编写了一个MSBuild任务来为MSBuild任务生成样板代码.是的,它会自行消耗.)
虽然我不建议其他人采用相同的方法,但我发现非常有用的一件事是内置的依赖关系管理.正如您所期望的那样,表达依赖关系很容易,让MSBuild能够满足它们.例如,我们软件中的几乎每一步都要求将某组文件复制到某个位置.你可以轻松写:
Step1: CopyFiles
Step2: CopyFiles, Step1
Run Code Online (Sandbox Code Playgroud)
当你执行时Step2,它只会复制一次文件.
构建和满足依赖树在软件中非常常见.我希望MSBuild团队能够获取他们的依赖管理代码,将其与MSBuild分离,并将其移至.NET Framework,任何人都可以使用它.Baring that,您认为以这种方式管理依赖项的最佳选择是什么?
.net msbuild dependency-injection dependency-management refix
在Team System上自动构建所需的二进制文件的存储位置?您是将它们与代码一起存储在SCM中还是其他地方?在SCM中有大量的二进制文件导致源控制器出现任何性能问题?
需要能够恢复到某些外部库的早期版本以修复已发布版本中的错误,但版本不兼容.分支可以解决问题,但我认为将二进制文件与代码一起存储是反模式的.
任何建议都是受欢迎的.
.net build-automation build-process dependency-management refix
我的很多项目都包含Castle/NHibernate/Rhino-Tools堆栈.令人困惑的是,Castle依赖于一些NHibernate库,NHibernate依赖于一些Castle库,而Rhino-Tools依赖于两者.
我已经在我的机器上构建了所有这三个项目,但我觉得复制NHibernate/Castle库有点多余,因为我使用NHibernate和Castle构建的结果库构建了Rhino-Tools.
现在,我将所有项目都包含在项目树中my/thirdparty/libs文件夹中的单独文件夹中.我应该只在项目中使用/ thirdparty/libs/rhino-tools并使用Castle/NHibernate库吗?这似乎在不重复文件方面具有逻辑意义,但我也喜欢将每个项目放在它自己的不同文件夹中.
你对此有何看法?
我正在开发VS C++ 2008中的程序.
现在,我有一个dll和lib依赖项的巨大列表,我正在添加更多.我担心当我需要通过从源代码构建来更新依赖项时(我必须在正确的位置手动替换已构建的dll和库),如果我意外忘记替换某些东西,反之亦然,我可能会遇到编译和/或运行时问题.找出哪个地方出错可能有点困难.
那么是否有某种程序或方法可以适应这项任务,以简化构建具有许多更新依赖性的程序?
dependencies dependency-management visual-studio-2008 visual-c++ refix