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

为什么不应该在CI服务器上安装Visual Studio?

  •  5
  • mafu  · 技术社区  · 15 年前

    很多刚接触CI(持续集成)的人都会在CI服务器上安装VS(visualstudio),“因为编译代码是必需的”。MSTest是这里提到的一个常见参考。

    (这个问题以前显然没有人问过,所以我加上它作为参考。如果已经存在,对不起,我错过了,请合并。如果在一段时间内没有回答这个问题,我可以自己加一个)

    2 回复  |  直到 15 年前
        1
  •  8
  •   Tomas Aschan    15 年前

    因为 你不需要这么做 . Visual Studio许可证非常昂贵,因此在没有人使用它的服务器上放置一个许可证只是一种浪费。有几个理由可以解释为什么您仍然需要在持续集成服务器上安装一个完整的Visual Studio实例,但下面是它们的反驳理由:


    现实:不,你没有。你需要 编译,但那是 available for free ,在Windows SDK中。请注意,对于不同的操作系统和.NET版本有多个版本,因此请小心下载正确的版本。

    原因2:我需要它来快速修复服务器。
    不应该 这就是为什么你有一个CI系统。

    原因3:没有visualstudio,我无法在CI服务器上运行MSTest no。
    现实:错了。另外,mstestrunner也是SDK的一部分(至少在我们的CI服务器上看起来是这样的-尽管我无法验证它,因为我们目前没有任何测试…)。然而,一个快速的谷歌搜索发现 this blog post

    请随意在评论中添加更多理由,我会反驳他们。

        2
  •  7
  •   Community CDub    5 年前

    我本想在评论中反驳@TomasLycken发布的公认答案,但发现我需要更多的空间来交谈。尽管我在技术上同意@TomasLycken所断言的,但在这里,我将列出一些我发现难以在我的CI服务器上安装的依赖项,并让您决定接受的答案有多正确。。。

    this S.O. question 我创造并回答。请注意,我花了 几个 花了好几个小时弄清楚如何注册所需的PIA—这是在服务器上运行一些.exe的结果,这些文件来自于我的V.Studio安装—hmmmmm

    上下文: 我有一个WinForms项目,它使用Web浏览器控件。。在“WebDocumentCompleted”活动中,我 DomDocument hshtml.IHTMLDocument2 .. 所以我才提到 Microsoft.mshtml 在我的项目中。

    结果: I see that Microsoft doesn't really recommend using their mshtml PIA outside of the Visual Studio environment they developed it for

    . 可能不是我最聪明的代码。也许是时候取消这个功能了-换句话说, 修复代码并重新提交 .

    @托马斯利肯,我认为这是对的。

    上下文: 所以我遇到了这个 cool post-build technique on S.O.

     $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets
    

    现在这已经足够纠正了。。我刚把我的电脑拷贝到CI服务器上 C:\Program Files (x86)\MSBuild\Microsoft 但是,我应该吗? 正常地

    3-只是把所有的.NET框架和多目标包准备就绪

    上面的第1点和第2点实际上是 最后的 我在尝试运行第一个构建作业时征服的东西。我的第一个构建工作是为我在过去8年中创建和维护的解决方案堆栈。。因此,它已经经受了一些框架的考验,并将有一些不平凡的纹理。我知道这不容易。事实上,我希望通过制作一个CI服务器 sln先生,事实上它已经准备好建造

    当我第一次收到干净的“Windows 2012 R2”服务器时,它只是缺少了很多东西。。我想知道我是否先安装了visualstudio,它是否可以直接纠正这些问题?

    下面是我必须要做的事情的概要——但它并没有显示出把一切弄清楚所带来的痛苦和痛苦以及错误的开始。不过,也许它能帮助别人。

    > First, uninstalled 4.6.1 framework
    -- (find Update for Microsoft Windows (KB3102467) and click Uninstall.)
    -- also uninstalled anything from MS labeled with C++ redistributable (a later step will restore these)
    
    > Then, install Windows 7 SDK (installs critical "reference assemblies" and a proper baseline 4.0 framework)
    -- Then, install Multi-Targeting Pack for Framework 4.0.1 (netfx_401mtpack.exe)
    -- Then, install Multi-Targeting Pack for Framework 4.0.3 (netfx_403mtpack.exe)
    
    > Then, reinstalled 4.6.1 framework for 2012 R2 (KB3102467) 
    
    > Then, installed Microsoft .NET Framework 4.6.1 Developer Pack (DP461-DevPack-KB3105179-ENU.exe)
    
    > Then, installed "Visual Studio 2015 Build Tools" (BuildTools_Full.exe)
    
    > Downloaded a copy of nuget.exe and put it in the C:\Windows directory
    

    4-清除“缺少规则集”警告MSB3884

    来自@kevinbosman的帖子 this GitHub issues thread

    如果不想编辑Microsoft.CodeAnalysis.Targets文件,请注意,仅复制文件夹是不够的 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets\ 到生成服务器。

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\EDev 并添加字符串值 StanDir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\

    • 如果需要将DLL复制到您的生成机器中,有些必须注册w/GAC more info here
      • Microsoft.VisualStudio.QualityTools.Resource.dll
    • 需要从开发人员计算机的注册表中复制一个配置单元到构建服务器中吗
    • 一些警告,如果你想让它们消失,根据 this Microsoft visual studio help forum VS 2010和功能包2
    推荐文章