VS.NET 解决方案在构建服务器上以不同方式构建
我有一个包含两个项目的 VS.NET 解决方案:ProjectWeb 和 ProjectLibrary。 PW 依赖于 PL,因此我在 PW 中有一个对 PL 的 VS.NET 项目 引用。
这在我的开发盒上运行得很好,但是当它全部到达构建服务器时,我有两个不同的构建项目,一个用于 PL,一个用于 PW。我想构建 PL 并将二进制文件复制到某个地方。然后,我想使用之前 PL 构建中的二进制文件来构建 PW 和它。
但是,当我仅在构建服务器上构建 PW 时,PW VS.NET 项目引用了一个不存在的项目,这是否有效?
我该如何设置
具体来说,我正在使用 CC.NET 和 NAnt,但我还有其他使用 Hudson 和直接 MS 构建的项目
I have a VS.NET solution with two Projects, ProjectWeb and ProjectLibrary. PW depends on PL, so I have a VS.NET project reference to PL in PW.
That works all well and good on my dev box, but when it all gets to the build server, I have two different build projects, one for PL and one for PW. I'd like to build PL and copy the binaries somewhere. Then, I'd like to build PW and it only, using the binaries from the previous PL build.
But will that work since the PW VS.NET project is referencing a project that doesn't exist when I build PW only on the build server?
How can I set this up
For specifics, I am using CC.NET and NAnt, but I have other projects that use Hudson and straight MS build
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我过去使用的一种方法是在 PL 项目上有一个 postBuild 事件,它将您的 dll 复制到 LocationX (类似)
(需要 /R /Y 来强制覆盖如果 dll 存储在源代码管理中并且是只读的,则通常需要该文件...否则实际上并不需要)。
然后在 PW 中不要使用项目引用,而是引用 LocationX 中的 dll。然后一切都将在您的机器和成型箱上运行。
您仍然可以在解决方案中包含 PL,因此调试应该仍然可以正常工作。
请注意,使用 PostBuild 事件有点“旧”的做法,您最好创建一个执行 xcopy 工作的 AfterBuild MsBuild 目标。但结果相同。
one approach I have used in the past is to have a postBuild event on the PL project which copies your dll to LocationX (something like this)
(the /R /Y is needed to force an ovewrite of the file which is usually required if the dll is stored in source control and is readonly...otherwise not really needed).
Then in PW do not use a project reference, reference the dll in LocationX instead. Then all will work on your machine and on the build box.
You can still include PL in your solution so debugging should still work fine.
Note that using the PostBuild event is a bit of an 'old' way of doing it, you're better off creating an AfterBuild MsBuild target which does the xcopy work. Same result though.