ChatGPT解决这个技术问题 Extra ChatGPT

在构建服务器上构建没有 Visual Studio 的 ASP.NET 4.5

自从我设置构建服务器以来已经有一段时间了,所以也许我忘记了一些东西,或者 .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 可能会安装我需要的目标文件,但除非我以某种方式安装错误,否则它没有.

那么,我需要在构建服务器上放置什么才能构建项目。我宁愿不必安装完整的 Visual Studio 2012。

自从我发布这个以来,我一直在做一些研究。让我知道我是否走错了路。看起来这也是 Visual Studio 2010 的一个问题,看起来人们通过几种方式解决了这个问题。一种是安装 Visual Studio Team Explorer。我试过了,但我的服务器是 Win 2008 r1 和 VSTE2012 不兼容。另一个有点吓人的解决方案是从另一台机器复制目标文件。这让我更进一步,但现在我收到了我的参考程序集丢失的错误,我猜这与原始问题有关。还有其他方法吗?
你在正确的轨道上,解决问题的简单方法是在你的构建服务器上安装 VS 2010。不过,这有点生硬。第二种方法是做你正在做的事情,从另一台机器上获取目标和相关的依赖关系,然后只将这些文件部署到服务器上。这种方法的危险在于 VS 服务包可能会更改您复制的文件,并且您的构建服务器将使用这些目标的过时版本,而您的开发人员正在使用更新的版本。
你是说VS2012吗?是的。我会检查一下,但我假设它无法与 win server 2008 r1 相提并论,因为 team explorer 2012 不是,但我会仔细检查。
抱歉,我错过了 2012 位,我猜它只会安装在服务器 2008 r2 上,因为它仅适用于客户端的 win 7。我认为更新构建服务器上的操作系统是不可能的?
是的,我一直在考虑更新服务器操作系统。我要调查一下,但我不确定我是否会被允许。

C
Community

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

与 2015 年相比:

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

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

与 2013 年相比:

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

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

与 2012 年相比:

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

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

与 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 Assemblies\Microsoft\Framework\.NETFramework\v4.6

.NET 4.5.2:

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

.NET 4.5.1:

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

.NET 4.5:

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

.NET 4.0.1:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0.1

.NET 4.0:

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

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

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

您还应该将 VisualStudioVersion 环境变量显式设置为您正在使用的 Visual Studio 版本(VS2010 为 10.0,VS2012 为 11.0,VS2013 为 12.0,VS2015 为 14.0),以确保它在您的配置中正确设置。


这为我们解决了问题+1。来自 maven/java,这太疯狂了。
未随 .NET Framework 安装的参考程序集? MSBuild 的目标不是。我不确定参考程序集,我认为是的。
在 Team City 无法编译 .NET 4.5 解决方案之后,将 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0 从开发人员机器复制到构建机器上的同一文件夹对我来说是诀窍,但是 .NET 4.0之前的解决方案确实编译了。
+1 参考程序集。我正在使用 Teamcity 和 MSBuild14 构建一个 4.5.1 项目,这是我的构建代理机器上缺少的链接。
这是一个愚蠢的问题,但却是一个简单的解决方案。
S
SwampyFox

我的问题与在 Windows 2008 Box 上安装 Windows Software Development Kit (SDK) for Windows 8 有关。如果您在该页面上进一步阅读,您将看到标有“Windows Vista 和 Windows Server 2008 上的 .NET Framework 4.5 SDK 工具”的标题。这告诉你:

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


谢谢沼泽。我将把这个答案标记为正确,但我只想提几件事。我不打算对此进行测试,但您的答案看起来确实可行。相反,我们只是升级服务器。其次,您知道这样做是否允许在发布补丁和服务包时更新组件?
我已按照 Server 2008 的这些说明进行操作,但不幸的是,我仍然看到 .nlp 文件,并且 mscorlib 已包含在使用 web deploy 的部署中
非常感谢。我正在使用 Jenkins,我刚刚更新了我的项目以使用 .NET 4.5。当我将我的工作推送给 Jenkins 时,它并没有抱怨错误的版本,而是抱怨缺少 System.Runtime 程序集。我更喜欢这个解决方案而不是手动复制文件,因为这个解决方案更容易自动化。
我使用 Windows Server 2012,并且在 Windows 8(开发机)中有 VS2012。只有我需要 MsBuild “C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\ 的目标。SDK 包含更多,不是吗?
D
Duncan Smart

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。 (或已接受答案中的任何步骤)
这绝对应该是公认的答案。容易得多,因为您肯定已经拥有一台带有 ref 程序集的机器。
@artfulhacker VS 2012 和 Win 8 SDK 都没有安装在 Win2k8 R1 上。如果您像我一样在 R1 上,则必须复制 ref 程序集。
@JoshKodroff 忘了提,我们有服务器 2012 构建代理,感谢您的澄清
但是此目录中没有 msbuild.exe 的副本。我在我的开发 PC(不是构建机器)上安装了 VS2012,但我仍然没有看到 4.5 版本。
C
Community

Microsoft Build Tools 2013 在这种情况下会有所帮助,正如其下载页面所述:

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


多一点解释可能会帮助其他程序员了解参考链接的工作原理。因为将来参考链接可能不再存在。
Microsoft Build Tools 2013 for VS 2013 和 VS 2012 ?无论如何,最好安装 Microsoft Build ToolsVisual Studio Agents 2012 stackoverflow.com/a/20373256/206730
c
ckkkitty

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

.Net Framework v4.5.1,安装工具所需 - http://www.microsoft.com/en-us/download/details.aspx?id=40779

MS Build Tools 2013,我们需要 C# 编译器 - http://blogs.msdn.com/b/visualstudio/archive/2013/07/24/msbuild-is-now-part-of-visual-studio.aspx

MS VS 2013 隔离外壳,我们需要 Web 应用程序目标 - http://www.microsoft.com/en-us/download/details.aspx?id=40764。


太感谢了。我一直想知道如何获得Microsoft.WebApplication.targets,而我从来不知道那个孤立的外壳!
J
Jean

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

您可以尝试安装 Visual Studio Agents 2012。

http://www.microsoft.com/en-us/download/details.aspx?id=38186


不适用于 VS2013。我安装了代理和控制器,但没有创建 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0
当然,Agents for Visual Studio 2013 也可用 - 对于那些阅读此答案且考虑到 VS 2013 而不是 VS 2012 的人。
它确实有效!你只需要安装 Visual Studio 2013 Shell (Isolated) (x86) 而不是 Visual Studio 2013 Shell (Integrated) (x86)
@Andrii Visual Studio Agents 2012 需要安装吗?还是仅 Visual Studio 2012 & 2013 Shell (Isolated) (x86) 和 Visual Studio 2012 & 2013 Shell (Integrated) (x86),无需安装 VS 代理?
只有贝壳。我只安装了2013