如何将4.0引用程序集添加到构建服务器(以便编译器找到它们)?

当您在未安装Visual Studio 2010的计算机上安装Visual Studio 2012时(我认为),会出现此问题。 我想在Visual Studio 2012上构建目标.net 4.0。我已经在没有VisualStudo 2010的情况下设置了机器。我最终得到的信息如下:

*Warning 2 The primary reference "blablaLibraryproject" could not be resolved because it was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0". blablaExecutableproject* 

这里的回答post( 安装了.NET 4.5的构建服务器能否成功将面向4.0的项目部署到仅安装了.NET 4.0的服务器? )说:

您可以更正此问题,但是您需要将4.0引用程序集添加到构建服务器(以便编译器找到它们),而不仅仅依赖于.NET 4.5版本。

那么如何“ 将4.0引用程序集添加到构建服务器(以便编译器找到它们) ”?

它们已经存在于机器上。 只需将项目的Target Framework设置从4.5更改为4.0

对于尝试在不支付VS许可证的情况下设置构建服务器的程序员来说,该链接问题中讨论的问题非常普遍。 这是相当远的,但缺少一个免费提供的组件,.NET Framework版本的多目标包。

这是一分钱一分钱而且是愚蠢的。 然后他们犯了一个致命的错误,他们从c:\ windows \ microsoft.net添加引用程序集。 就像它在.NET 4.0之前的框架版本中完成的那样。 当在仅安装了4.0的计算机上运行构建的产品时,这会导致很难诊断运行时exception。 这个问题的提问者非常幸运,他有一个相对容易诊断的问题。 然而,这可能会更糟糕,为常见的框架类型获得相当奇怪的TypeLoadExceptions。

你没有这个问题,你安装了VS,所以你已经有了多目标包。 4.0版本在C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0中提供。 MSBuild和VS都知道如何在没有你帮助的情况下找到它。 只需更改项目设置即可告诉他们您要定位4.0

除了汉斯的答案之外,还有另一个可能的原因:

我的构建服务器安装了Visual Studio,但是,我的项目针对的是.NET 4.0.3,并且我的构建服务器上缺少特定的目标框架。 因此它默默地默认为.NET 4.5。

我通过将项目的目标框架更改为.NET 4来解决此问题。