【问题标题】:VS.NET solution built differently on build serverVS.NET 解决方案在构建服务器上构建不同
【发布时间】:2011-02-10 09:23:12
【问题描述】:

我有一个 VS.NET 解决方案,其中包含两个项目,ProjectWeb 和 ProjectLibrary。 PW 依赖于 PL,所以我在 PW 中有一个 VS.NET project 对 PL 的引用。

这在我的开发盒上运行良好,但是当它全部到达构建服务器时,我有两个不同的构建项目,一个用于 PL,一个用于 PW。我想构建 PL 并将二进制文件复制到某处。然后,我想只使用之前 PL 构建中的二进制文件来构建 PW。

但是当我仅在构建服务器上构建 PW 时,PW VS.NET 项目正在引用一个不存在的项目,这会起作用吗?

如何设置

具体来说,我使用的是 CC.NET 和 NAnt,但我还有其他项目使用 Hudson 和直接 MS 构建

【问题讨论】:

    标签: visual-studio-2008 msbuild build-process continuous-integration nant


    【解决方案1】:

    我过去使用的一种方法是在 PL 项目上创建一个 postBuild 事件,该事件将您的 dll 复制到 LocationX(类似的东西

    XCOPY $(TargetFileName) LocationX /R /Y
    

    (需要 /R /Y 来强制改写文件,如果 dll 存储在源代码管理中并且是只读的,这通常是必需的……否则实际上不需要)。

    然后在 PW 中不要使用项目引用,而是在 LocationX 中引用 dll。然后一切都将在您的机器和构建盒上运行。

    您仍然可以在解决方案中包含 PL,因此调试应该仍然可以正常工作。

    请注意,使用 PostBuild 事件有点“旧”的方式,您最好创建一个 AfterBuild MsBuild 目标来执行 xcopy 工作。但结果相同。

    【讨论】:

    • 感谢您的提示,我会试试看。
    • 这给了我另一个尝试的角度:就像你说的,不要在 PW 中使用项目引用。相反,浏览到 dll 位置并使用文件位置包含引用。这可能行得通。
    猜你喜欢
    • 2023-03-26
    • 2016-12-06
    • 2023-03-26
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多