【发布时间】:2018-01-26 13:09:30
【问题描述】:
我在 Windows Server 2016 上设置了 Jenkins 构建服务器。我安装了“Visual Studio 2017 构建工具”(MSBuild 的最新版本)。当我尝试构建面向 .Net 4.0 的项目时,我收到以下错误消息:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1122,5):错误 MSB3644:框架“.NETFramework 的参考程序集” ,Version=v4.0" 未找到。要解决此问题,请为此框架版本安装 SDK 或 Targeting Pack,或者将您的应用程序重新定位到已安装 SDK 或 Targeting Pack 的框架版本。请注意,程序集将从全局程序集缓存 (GAC) 中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位于您想要的框架。
于是我检查了 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0' 发现,果然,这个文件夹里没有 dll,只有 xml 文件。
所以我尝试安装完整的 .Net 4.0 框架,考虑安装参考程序集,但我收到以下消息:
1) Microsoft .NET Framework 4 已经是该操作系统的一部分。您不需要安装 .NET Framework 4 可再发行组件。
2) 此计算机上已安装相同或更高版本的 .NET Framework 4。
所以我在谷歌上搜索了几个网站,上面写着'.NET Framework 4.5.2 is considered to be an "in-place update" to the .NET 4 family, with no need to recompile applications',我想也许我可以安装 .Net 4.5.2 定位包并使用 MSBuild 的这个参数来定位它们:
/property:FrameworkPathOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2"
果然,这似乎行得通。问题是我不完全理解参考程序集和目标包等等。我担心,虽然我似乎已经解决了这个问题,但稍后我会发现,在更远的地方,我引入了一些其他令人讨厌的问题。
问题
- 我所做的有什么问题吗?
- 有没有更好的方法来做到这一点?
更新
我没有提到我还尝试通过this link 安装 .Net Framework 4.0.3 milti-targeting 包,但我收到以下错误:
未找到 Microsoft .NET Framework 4 多目标包。请修复 Microsoft Visual Studio 2010 的安装以获取此更新。
【问题讨论】:
标签: .net windows msbuild .net-4.0 windows-server-2016