在构建服务器上不使用Visual Studio的情况下构建ASP.NET 4.5


81

自从我设置构建服务器以来已经有一段时间了,所以也许我忘记了一些东西,或者.NET 4.5与上次执行此操作的版本不同,但这是我的问题。

我正在尝试设置构建服务器来监视源代码控制存储库。每当发生任何更改时,我都希望服务器拉出更改并构建项目。如果没有错误,我想将该站点部署到在构建服务器上运行的网站。

过去,当我这样做时,我以为只安装.NET就可以做到这一点,但是当我尝试构建该项目时,出现了一个错误消息“ C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplications \ Microsoft.WebApplication.targets”丢失了,如果我去看看,我可以看到它丢失了。实际上,没有Visual Studio 11目标文件。

经过很多思考和抓挠,我走了出去,得到了“ Windows 8 / .NET 4.5 SDK”,以为.NET 4.5 SDK可能会安装我需要的目标文件,但除非我以某种方式安装了错误,否则它不会安装。

因此,为了使项目得以生成,我需要在Build Server上放置什么。我希望不必安装完整的Visual Studio 2012。


自发布此消息以来,我一直在做一些研究。让我知道我是否走错了路。看起来这也是Visual Studio 2010的问题,看起来人们已经通过几种方法解决了这一问题。一种是安装Visual Studio Team Explorer。我尝试过,但是我的服务器是Win 2008 r1,并且VSTE2012不兼容。另一个令人恐惧的解决方案是从另一台计算机复制目标文件。这使我更进一步,但是现在我收到了我的参考程序集缺失的错误,我猜测这与原始问题有关。还有另一种方法吗?
扎克2012年

3
您处在正确的轨道上,解决该问题的简单方法是在构建服务器上安装VS 2010。不过,这有点钝。第二种方法是做您正在做的事情,并从另一台计算机获取目标和相关的依赖关系,然后将那些文件仅部署到服务器上。这种方法的危险在于,VS Service Pack可能会更改您复制的文件,并且在开发人员使用更新版本时,构建服务器将使用这些目标的陈旧版本。
詹姆斯·里德

你是说VS2012吗?是的 我会进行检查,但我认为它与Win Server 2008 R1不具有可比性,因为团队资源管理器2012并非如此,但应仔细检查。
扎克2012年

1
抱歉,我错过了2012版本,我想它只能安装在server 2008 r2上,因为它只能在客户端的win 7下使用。我认为更新构建服务器上的操作系统是不可能的吗?
詹姆斯·里德

是的,我一直在考虑更新服务器操作系统。我将研究它,但是我不确定是否会被允许。
扎克2012年

Answers:


35

我的问题与在Windows 2008 Box上为Windows 8安装Windows软件开发工具包(SDK)有关。如果您在页面上进一步阅读,将获得标题为“ Windows Vista和Windows Server 2008上的.NET Framework 4.5 SDK工具”的标题。这告诉您:

  1. 在支持的操作系统(例如Windows 7或Windows 8)上运行Windows SDK for Windows 8安装程序。
  2. 在“指定位置”屏幕上选择以下选项:下载Windows SDK以在另一台计算机上安装。
  3. 按下一步按钮。
  4. 在“加入客户体验改善计划(CEIP)”屏幕上回答问题。
  5. 在下一个屏幕上,选择.NET Framework 4.5软件开发工具包功能。取消选择所有其他可以取消选择的功能。
  6. 选择下载按钮。
  7. 转到下载位置(在步骤2中指定),然后找到以下.NET Framework 4.5 SDK工具安装程序文件:sdk_tools4.msi,sdk_tools4.cab
  8. 您可以将这些文件复制到组织内的Windows Vista或Windows 2008 Server计算机上。这些文件需要复制到Windows Vista或Windows 2008 Server计算机上的同一目录中。注意:不要在组织外部或作为任何其他安装程序的一部分重新分发这些文件。
  9. 在Windows Vista或Windows 2008 Server计算机上,在此处查看许可条款。
  10. 检查计算机上是否已安装.NET Framework 4.5。否则,请从www.microsoft.com下载并安装.NET Framework 4.5。
  11. 使用管理员权限打开命令提示符。
  12. 转到复制.NET Framework 4.5 SDK Tools安装程序文件的目录。
  13. 通过使用命令行安装.NET Framework 4.5 SDK工具:Msiexec / i sdk_tools4.msi VSEXTUI = 1

谢谢沼泽。我将这个答案标记为正确,但我只想提几件事。我不会对此进行测试,但是您的答案确实似乎可行。相反,我们只是升级服务器。其次,您是否知道以这种方式进行操作是否可以在发布补丁和Service Pack时更新组件?
扎克2012年

我在Server 2008上遵循了这些说明,但是不幸的是,我仍然看到.nlp文件和mscorlib包含在使用Web部署的部署中
Nathan

1
非常感谢你。我正在使用Jenkins,并且刚刚将项目更新为使用.NET 4.5。当我将工作推送到Jenkins时,它并没有抱怨版本错误,而是抱怨缺少System.Runtime程序集。与手动复制文件相比,我更喜欢此解决方案,因为该解决方案更易于自动化。
Ido Ran

我使用Windows Server 2012,并且在Windows 8(开发机器)中具有VS2012。只有MsBuild我需要目标“ C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \。SDK包含更多内容,不是吗?
Kiquenet

84

要在没有Visual Studio的CI服务器上运行,只需要将几个文件夹从开发计算机复制到CI服务器上的相同位置。无需安装SDK。

VS 2015:

  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013:

  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012:

  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010:

  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web
  • C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

.NET 4.6:

  • C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2:

  • C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1:

  • C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5:

  • C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1:

  • C:\ Program Files(x86)\参考程序集\ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0:

  • C:\ Program Files(x86)\ Reference Assemblys \ Microsoft \ Framework \ .NETFramework \ v4.0

或者,如Matt所建议的,您可以将它们复制到项目的子目录中,并更改<MSBuildExtensionsPath32>MSBuild文件中的位置(通常为.csproj.vbproj)。

完成此操作后,将编译您的项目。

您还应该明确地将VisualStudioVersion环境变量设置为Visual Studio版本(对于VS2010为10.0,对于VS2012为11.0,对于VS2013为12.0,对于VS2015为14.0),只是为了确保在您的配置中正确设置了该变量。


6
这为我们+1解决了问题。来自maven / java,这很疯狂。
NimChimpsky 2014年

未随.NET Framework安装参考程序集?MSBuild的目标不是。我不确定参考大会,我认为是。
Kiquenet 2014年

在Team City无法编译.NET 4.5解决方案,但是.NET 4.0之后,将开发人员机器上的C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0复制到构建机器上的同一文件夹中对我来说是个窍门较早的解决方案可以编译。
Tore Aurstad '16

+1为参考部件。我正在使用Teamcity和MSBuild14构建4.5.1项目,而这是我的构建代理计算机上缺少的链接。
沃菲尔德

这是一个愚蠢的问题,但却是一个简单的解决方案。
cori

25

来自msdn

Windows SDK不再附带完整的命令行生成环境。您必须分别安装编译器和构建环境。如果您需要包含编译器和构建环境的完整开发环境,则可以下载Visual Studio 2012 Express,其中包括Windows SDK的相应组件。

为了解决此问题,我必须将文件夹C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5从开发计算机(顺便说一下具有Visual Studio 2012)复制到构建代理上。执行此操作后,Team City不再报告任何错误,并且mscorlib.dll没有输出到bin文件夹。


谢谢,这为我修复了它,无需下载sdk。(或接受的答案中的任何步骤)
科恩(Cohen

太棒了,救了我一天!
Magnus

1
这绝对应该是公认的答案。因为您肯定已经有一台装有ref组件的机器,所以要容易得多。
乔什·科德罗夫

1
@artfulhacker VS 2012和Win 8 SDK均未安装在Win2k8 R1上。如果像我一样使用R1,则必须复制ref程序集。
乔什·科德洛夫

1
但是此目录中没有msbuild.exe的副本。我在开发PC上(而不是在构建计算机上)安装了VS2012,但仍然看不到4.5版本。
ashes999

12

Microsoft Build Tools 2013在这种情况下会有所帮助,因为其下载页面描述了:

如果您的计算机上未安装Visual Studio,则可以使用Build Tools 2013生成托管应用程序。此下载中还包括Visual Basic和C#编译器。(在早期版本中,这些工具包含在独立的.NET Framework中。)


1
进一步的解释可能会帮助其他程序员理解参考链接的工作原理。将来,参考链接可能不再存在。
NJInamdar 2014年

VS 2013和VS 2012的Microsoft Build Tools 2013吗?无论如何,最好安装Microsoft Build ToolsVisual Studio Agents 2012 stackoverflow.com/a/20373256/206730
Kiquenet

8

我的部门 喜欢对我们的Win 7构建计算机上安装的内容采取简约的方法。但是,由于潜在的注册表项问题,我们不喜欢仅复制和粘贴文件/文件夹。我没有安装VS 2013,而是安装了以下更小的免费组件。现在,开发团队可以成功构建VS 2013 Web应用程序。


非常感谢。我一直想知道如何获得,Microsoft.WebApplication.targets而且我从来不知道该隔离壳!
威廉·格罗斯

6

我使用Visual Studio代理解决了这个问题。

您可以尝试安装Visual Studio代理2012。

http://www.microsoft.com/zh-cn/download/details.aspx?id=38186


不适用于VS2013。我安装了代理和控制器,但未创建C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0
Guillaume

1
当然,也可以使用Visual Studio 2013的代理-对于那些在阅读VS 2013而不是VS 2012时了解此答案的人。
J0e3gan 2014年

2
确实有效!您只需要安装Visual Studio 2013 Shell(独立)(x86),然后安装Visual Studio 2013 Shell(集成)(x86)
Andrii 2014年

@Andrii Visual Studio代理2012是否需要安装?或仅安装Visual Studio 2012和2013 Shell(独立)(x86)和Visual Studio 2012和2013 Shell(集成)(x86),而无需安装VS Agents
Kiquenet 2014年

只有贝壳。我仅安装了2013
-Andrii 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.