.NET 4.0在CI服务器上的构建问题


99

有人设法在CI服务器上编译.NET 4.0应用程序而无需在CI服务器上安装Visual Studio 2010吗?

.NET 4.0不存在SDK。在CI服务器上已安装.NET 4.0。Msbuild.exe适用于简单项目,并给出以下警告:

(GetReferenceAssemblyPaths目标)-> C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(847,9):警告MSB3644:框架“ .NETFramework,Version = v4.0”的参考程序集找不到。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或将您的应用程序重新定位到已为其安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将代替参考程序集。因此,您的程序集可能没有正确地针对您想要的框架。


1
我怎样才能使它成为致命错误而不是警告?它隐藏在我们的构建日志中,相反,它由于有关mscorlib.dll的一些神秘消息而进一步失败
上校恐慌

我在这里写了一篇详细的文章:neelbhatt.com/2018/05/04/…–
Neel

Answers:


128

您不再需要安装VS,现在就可以安装“适用于Windows 7和.NET Framework 4的Microsoft Windows SDK”。

http://www.microsoft.com/downloads/details.aspx?displaylang=zh_CN&FamilyID=6b6c21d2-2006-4afa-9702-529fa782d63b


44
默认安装为1.7 GB,但是其中大多数文件都是不必要的。如果您取消选中除.NET Development> Intellisense和Reference Assemblys之外的所有内容,它们仍然会为您提供所需的.NET 4目标包(大约450 MB)。
路加·桑普森

1
您可能还需要检查.NET开发>工具,因为它将带入一些实用程序,例如sn.exe,这些实用程序可用于处理已签名的程序集。
Mykro 2011年

8
还有一个Web安装程序,因此您只需要下载所需的部分。可以在这里下载:microsoft.com/download/en/confirmation.aspx?
id

2
尽管它被命名为“ Windows 7”,但值得注意的是受支持的操作系统:Windows 7,Windows Server 2003 R2标准版(32位x86),Windows Server 2003 R2标准x64版,Windows Server 2008,Windows Server 2008 R2 ,Windows Vista,Windows XP Service Pack 3
Aligma 2012年

2
那个答案对我有帮助。我在安装sdk 7.1时遇到了其他问题,如此处所示,解决了mathworks.com/matlabcentral/answers/95039
ari

23

适用于.NET 4.5的SDK可在此处获得。安装程序可以与具有基本授权的代理一起很好地工作。支持的操作系统:Windows 8,Windows Server 2012,Windows 7,Windows Server 2008 R2

PS我的答案更像是对Jeremy答案的评论,但是我没有足够的声誉来评论答案。


1
在引用的页面上:“ Windows SDK不再附带完整的命令行构建环境。WindowsSDK现在需要单独安装编译器和构建环境。” 因此,我认为这不足以运行构建服务器。
克里斯(Chris

1
这为我解决了。您只需要选择“ .NET Framework 4.5软件开发工具包”选项,该选项仅需要62.3 MB,并且可以在Windows Server 2012 R2上安装的用于SharePoint Apps部署的TFS Build 2013服务器上正常运行。无需覆盖FrameworkPathOverride参数。
Koen Zomers,2015年

10

其他选择:不安装Net 4.0 SDK或vs 2010

从您的开发机器上复制参考程序集文件夹以构建服务器(190MB)。

使用msbuild -p:FrameworkPathOverride选项指向参考程序集文件夹

参考程序集位置:

C:\ Program Files(x86)\参考程序集\ Microsoft \ Framework \ .NETFramework \ v4.0或C:\ Program Files \ Reference程序集\ Microsoft \ Framework \ .NETFramework \ v4.0

从以下位置找到此:

.NET 4.0生成服务器参考程序集警告MSB3644

如果出现此错误:“未找到Microsoft.WebApplication.targets”-只需从开发机https://stackoverflow.com/a/5344246/423356复制目标

如果在构建服务器中未安装mvc3;将“添加可部署的程序集”添加到mvc项目 http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx

如果在未安装SDK或Visual Studio的情况下构建MSTest项目时遇到错误,请执行以下操作:有几篇关于此的博客文章,糟糕的是,解决方案对我来说太复杂了。我用NUnit代替MSTest


由于我的2012服务器不允许我安装.Net 4,因为安装程序说存在更高版本。我做了@kite所说的,并从安装了VS 2012的PC上复制了内容。这解决了我的问题。
chdev77 '16

0

本页列出了每个Visual Studio版本的.NET SDK。 http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx

对于较小的下载,请选择“开发人员包”或“目标包”,而不是完整的Windows SDK。


安装开发人员工具包或目标工具包可能是一个一般性的提示,但是特定于.NET Framework 4.0(有关此问题),没有这样的工具包,Windows SDK是不可避免的。
Lex Li
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.