代码之家  ›  专栏  ›  技术社区  ›  Jon

msbuild文件vs sln和项目文件

  •  4
  • Jon  · 技术社区  · 15 年前

    我刚开始研究msbuild,并开始思考整个想法。我已经和Hudson建立了一个CI服务器,想知道我应该如何处理构建脚本和SLN/proj文件。

    例如,我有一个现有的解决方案,其中有10个项目(一个是网站,另一个是Web部署项目,以及设置msi项目)。有什么好方法可以解决这一问题?

    1. 我应该把msbuild指向sln文件吗?
    2. 我应该接受SLN文件中的内容并创建另一个,以便它指向不同的proj文件吗?
    3. 我应该从所有sln和proj文件中获取代码并创建一个自定义构建脚本吗?

    如果我执行最后两个脚本中的任何一个,是否需要担心维护两组脚本,即确保我的脚本和sln/proj文件都是最新的?

    另外,当在本地盒子上开发时,如何处理构建它?我是否只按ctrl-shift b来构建它,然后只对CI服务器/部署构建使用构建脚本?

    3 回复  |  直到 10 年前
        1
  •  1
  •   wallismark    15 年前

    我喜欢的方法是,每个项目都有自己的构建文件(不管是msbuild还是nant等),然后有一个构建所有项目的主构建。这样,您将注意力集中在项目上(例如在修复bug时),并在签入之前运行主构建加上master.build,这就是在构建机器上运行的。

    您仍然可以在VS中正常地构建和调试,构建脚本是独立的。生成脚本将仅用于生成框,并在签入前运行。

    这只是我的看法。你可以在上面找到我的帖子 getting started with CI 有用的…

    祝你好运!

        2
  •  3
  •   mcdon    15 年前

    创建运行msbuild任务的生成脚本。将msbuild任务指向解决方案或项目。编译源代码变得简单,这只是另一项任务。您的构建脚本,如果可以自由地专注于更大更好的事情。

    您的CI服务器将运行生成脚本。要在本地计算机上运行生成,请在项目中包含.bat文件。.bat文件调用msbuild来运行生成脚本,并为生成日志文件等操作设置命令行选项。然后您可以双击BAT文件并查看日志文件以查看结果。下面是一个例子:

    %WINDIR%\Microsoft.NET\Framework\v3.5\MSBuild.exe build.xml /fileLogger /fileLoggerParameters:LogFile=MSBuildLog.txt
    
        3
  •  1
  •   nalply Gagan    10 年前

    我在google上找到了杰夫关于“f5”的帖子:

    http://blog.codinghorror.com/the-f5-key-is-not-a-build-process/

    通过这篇文章和其他几篇文章,我决定最好创建一个独立于SLN和项目文件的msbuild脚本。

    斯科特·汉塞尔曼( Scott's Blog )有一个关于在vs中创建运行构建脚本的快捷方式的好链接。 blog entry about parallel building

    我假设您仍然需要按F5进行调试,并且大多数情况下无法避免这种情况(ASP.NET可以附加到进程,因此您不必一直这样做)。

    我将首先查看项目文件并从中构建一个脚本,然后定制以适应之后的需求。

    希望这能帮助其他人在未来环顾四周。